javascript - HTML 输入字段,记住光标位置

标签 javascript jquery html html-input

我有一个带有输入字段的应用程序,一旦用户输入字符,该输入字段就需要转换为大写。这按预期工作。

但是,如果用户尝试在已存在的单词之间输入字符,光标将被推到输入字段的末尾。有没有办法可以将光标保持在正确的位置?

在您投票之前,我确实查看了 Stack Overflow 和其他地方的帖子。无法找到合适的解决方案。请提供您的反馈。

JSFiddle Link

$(function() {
  $("#referenceNo").on('keyup change', function(e) {
    $(this).val($(this).val().toUpperCase());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<label for="referenceNo">Reference No</label>
<br/>
<input type="text" id="referenceNo" name="referenceNo" value="HELLO WORLD!" />

尝试在“Hello World!”之间输入一个字符,光标会被推到单词末尾。这需要修复..

最佳答案

试试这个,您可以使用setSelectionRange工作Fiddle

$(function () {
    $("#referenceNo").on('keyup change', function (e) {            
        var startPos = this.selectionStart,
        endPos = this.selectionEnd;    

        $(this).val($(this).val().toUpperCase());    
        // restore cursor
        this.setSelectionRange(startPos, endPos );

    });
});

你也可以使用纯CSS

   #referenceNo {
     text-transform: uppercase
   }

关于javascript - HTML 输入字段,记住光标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32226548/

相关文章:

javascript - 在特定情况下不显示 jquery 工具提示

javascript - 在 HTML5 Canvas 上动画绘制路径

javascript - 使用输入类型 ="file"字段上传文件,其中 .change() 事件并不总是在 IE 和 Chrome 中触发

javascript - 如何将 .filter 的输出存储在数组或字符串中?

jquery - <li> 列表在 4 行中具有相同的高度,最大 li 的高度不变?

javascript - 如何将我的 javascript 与我的网页合并?

javascript - 尝试合并异步方案

jquery - 在 Fullcalendar eventAfterAllRender 之后触发函数

html - 将 div 居中对齐

javascript - ChartJS : How to add empty values?