Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JavaScript更新文本字段会将光标强制到末尾_Javascript_Jquery - Fatal编程技术网

通过JavaScript更新文本字段会将光标强制到末尾

通过JavaScript更新文本字段会将光标强制到末尾,javascript,jquery,Javascript,Jquery,我正在使用JavaScript jQuery函数强制文本字段使用大写。问题是,如果用户键入文本,然后尝试使用箭头键,或者单击字段的开头并再次键入,则会强制光标返回到文本字段的结尾 请参阅以下JSFIDLE: 键入任何内容,然后尝试使用左箭头键,或单击文本字段的开头并键入 我怎样才能解决这个问题?谢谢。您只需使用CSS即可: #username { text-transform: uppercase; } 您只需使用CSS即可做到这一点: #username { text-transform:

我正在使用JavaScript jQuery函数强制文本字段使用大写。问题是,如果用户键入文本,然后尝试使用箭头键,或者单击字段的开头并再次键入,则会强制光标返回到文本字段的结尾

请参阅以下JSFIDLE:

键入任何内容,然后尝试使用左箭头键,或单击文本字段的开头并键入


我怎样才能解决这个问题?谢谢。

您只需使用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函数也有同样的问题,比如只允许字母数字,这是一个你需要解决的问题。如果您有很多字段需要验证,那么值得使用类似的验证插件。需要注意的一点是,该值不是以大写形式存储在数据库中,而是以键入的形式存储。