在jquery中,当你输入单词时,单词的中间位于最后

时间:2015-06-29 14:38:31

标签: javascript jquery event-handling

当你键入上一个输入时,我有两个输入,它同时写下一个输入。我有一封信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

2 个答案:

答案 0 :(得分:0)

您需要的是知道活动的插入符位置。我找到了一个很好的函数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

请注意

答案 1 :(得分:0)

试试这个:

$(".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">

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