在 jquery 中,当您键入字母时,单词的中间放在最后

In jquery when you type letter middle of word goes last

我有两个输入,当你输入上面的输入时,它会同时写入底部的输入。我有一个字母 i,它与字母 ı 不同,但在英语中它们有相同的大写字母 I 所以我写了下面的代码来解决这个问题:

$(".buyuk").on("keypress", function(event) {
    event.preventDefault();
    if (event.which == 105)
        $(this).val($(this).val() + "İ");
    else
        $(this).val($(this).val() + String.fromCharCode(event.which).toUpperCase());
});

当你想从中间编辑单词时,当你写完单词后,它会将字母添加到末尾。例如,我输入了 moitor,但当我预期输出为 monitor 时,却变成了 moitorn

您需要知道活动插入符位置在哪里。我找到了一个不错的函数 here.

有了那个函数,你可以重写你的函数:

$(".buyuk").on("keypress", function(event) {
    event.preventDefault();
    if (event.which == 105)
       var key = "İ";
    else
       var key = String.fromCharCode(event.which).toUpperCase();    
    var carPos = $(this).getCursorPosition();
    var v = $(this).val();
    var l = v.length + 1;
    var newValue = v.substr(0,carPos) + key + v.substr(carPos,l)
    $(this).val( newValue );
});

DEMO

备注

试试这个:

$(".buyuk").on("keypress", function(event) {
  event.preventDefault();

  var char = String.fromCharCode(event.which).toUpperCase();
  if (event.which == 105) char = "İ";

  var og = $(this).val();
  var selection = this.selectionStart;

  $(this).val(og.substr(0, selection) + char + og.substr(this.selectionEnd, og.length));

  this.selectionStart = this.selectionEnd = selection + 1;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="buyuk">

这适用于 select 替换,并且不会移动您的光标位置。因此,如果您键入 12345 和 select 34 并键入 J,它将变成 12J5,就像普通文本字段一样。它还会保持您的光标位置,因此如果您在输入的中间开始输入,它不会将您的光标移动到文本字段的末尾。