我有一个用户可以复制的表单,因此他们可以一次提交多个表单。这很好用。但是,我注意到用户没有以正确的方式使用它。例如,我要求缩写,人们填写他们的正名。 PHP会检查所有字段并在必要时自动更正它们,但这会将John变成J.O.H.N。
无论如何,一个好方法是autocorrectfields。这适用于初始表单,但在重复的表单上出错。特别是首字母很奇怪。我对jQuery和Javascript的了解非常有限,所以经过几周的困惑我仍然不知道如何解决它。欢迎提出建议。
小提琴:http://jsfiddle.net/QUxyy/15/
JS
// Lowercase
$(".lowercase").keyup(function(e)
{
$(".lowercase").val(($(".lowercase").val()).toLowerCase());
if (/[a-z]/g.test(this.value))
{
this.value = this.value.replace(/[^a-z ]/g, '');
}
});
// Initials
$(".initials").focus(function() {
var current = $(".initials").val();
$(".initials").keyup(function(e) {
var key = String.fromCharCode(e.keyCode);
if (key >= 'A' && key <= 'Z') {
current += key + ".";
this.value = current;
}
else {
current = "";
}
});
$(".initials").blur(function() {
var i = $(".initials").val();
var last = i[i.length - 1];
if (last != "." && i.length !== 0){
this.value += ".";
}
});
});
// Capitalize
$(".cap").keyup(function(e)
{
function convertToUpper() {
return arguments[0].toUpperCase();
}
val = this.value.toLowerCase().replace(/\b[a-z]/g, convertToUpper);
this.value = val;
});
答案 0 :(得分:1)
在你的回调事件中,.voorletters的处理函数使用'this',例如:
$(document).on("keydown", ".voorletters", function(e) {
var i = $(this).val();
if (e.keyCode == 8 && i.charAt(i.length - 1) == ".") {
$(this).val(i.slice(0, -1));
current = $(this).val();
}
})
你应该把它作为.initials,.lowercase等所有的回调功能......