通过JavaScript更新文本字段会将光标强制到末尾
我正在使用JavaScript jQuery函数强制文本字段使用大写。问题是,如果用户键入文本,然后尝试使用箭头键,或者单击字段的开头并再次键入,则会强制光标返回到文本字段的结尾 请参阅以下JSFIDLE: 键入任何内容,然后尝试使用左箭头键,或单击文本字段的开头并键入通过JavaScript更新文本字段会将光标强制到末尾,javascript,jquery,Javascript,Jquery,我正在使用JavaScript jQuery函数强制文本字段使用大写。问题是,如果用户键入文本,然后尝试使用箭头键,或者单击字段的开头并再次键入,则会强制光标返回到文本字段的结尾 请参阅以下JSFIDLE: 键入任何内容,然后尝试使用左箭头键,或单击文本字段的开头并键入 我怎样才能解决这个问题?谢谢。您只需使用CSS即可: #username { text-transform: uppercase; } 您只需使用CSS即可做到这一点: #username { text-transform:
我怎样才能解决这个问题?谢谢。您只需使用CSS即可:
#username { text-transform: uppercase; }
您只需使用CSS即可做到这一点:
#username { text-transform: uppercase; }
发生这种情况的原因是,您正在从DOM中删除光标所在的内容,然后用新内容替换它们。您需要跟踪光标引用,然后手动设置其在新内容中的位置。发生这种情况的原因是您正在从DOM中删除光标所在的内容,然后用新内容替换它们。您需要跟踪光标引用,然后手动设置其在新内容中的位置。CSS建议,或者您可以执行以下操作:
$(document).ready(function() {
$("#username").bind("input paste", function() {
$(this).val($(this).val().toUpperCase());
})
.bind("keydown", function(e) {
e.shiftKey = true;
});
});
CSS,或者您可以这样做:
$(document).ready(function() {
$("#username").bind("input paste", function() {
$(this).val($(this).val().toUpperCase());
})
.bind("keydown", function(e) {
e.shiftKey = true;
});
});
很好,但我有其他JS函数也有同样的问题,比如只允许字母数字,等等。不过,你需要解决的问题少了一个。如果你有很多字段需要验证,那么值得使用一个验证插件,比如。需要注意的一点是,值不是以大写形式存储在数据库中,而是以键入的形式存储的。很好,但我有其他JS函数也有同样的问题,比如只允许字母数字,这是一个你需要解决的问题。如果您有很多字段需要验证,那么值得使用类似的验证插件。需要注意的一点是,该值不是以大写形式存储在数据库中,而是以键入的形式存储。