1

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

请参阅以下 jsFiddle:http: //jsfiddle.net/Msh7P/1/

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

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

4

3 回答 3

2

你可以只用 CSS 做到这一点:

#username { text-transform: uppercase; }
于 2012-11-21T00:54:38.017 回答
2

建议的CSS,或者您可以这样做:

$(document).ready(function() {
    $("#username").bind("input paste", function() {
        $(this).val($(this).val().toUpperCase());
    })
        .bind("keydown", function(e) {
            e.shiftKey = true;
        });
});​
于 2012-11-21T01:04:42.490 回答
1

发生这种情况的原因是因为您要从 DOM 中删除光标所在的内容,然后用新内容替换它们。您将需要跟踪光标引用,然后在新内容中手动设置其位置。

于 2012-11-21T01:01:19.613 回答