在不丢失光标位置的情况下更新输入值

IT技术 javascript jquery
2021-01-27 00:00:03

我想使用 JavaScript 强制文本框的值是小写的。我已经尝试了下面的代码,但是每次按下一个键时,光标都会跳到输入的末尾。我怎样才能避免这种情况?

$("#beLowerCase").keyup(function(){
    $(this).val( $(this).val().toLowerCase() );
});
1个回答
$("#beLowerCase").on('input', function(){

    // store current positions in variables
    var start = this.selectionStart,
        end = this.selectionEnd;

    this.value = this.value.toLowerCase();

    // restore from variables...
    this.setSelectionRange(start, end);
});

小提琴


这实际上也适用于 CSS:

#beLowerCase{
  text-transform:lowercase;
}

并且服务器可以处理实际的小写...

惊人的!!CSS 的东西要好得多!
2021-03-16 00:00:03
幸运的是,我不必关心 IE :)
2021-03-18 00:00:03
在使用此技术去除字符时,不要忘记考虑已更改的光标位置。如果在设置 selectionRange 之前值的长度发生变化,则应从选择的开始和结束处减去长度差异。
2021-03-18 00:00:03
我讨厌 jQuery 是有原因的,因为每个人都在根本不需要它的时候使用它。
2021-03-25 00:00:03
对于 Safari:不要用 触发这个小写函数onblur,否则输入将永远保持焦点
2021-03-28 00:00:03