当你键入上一个输入时,我有两个输入,它同时写下一个输入。我有一封信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
。
答案 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 );
});
请注意
答案 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
,就像普通文本字段一样。它还可以保持光标位置,因此如果您在输入的中间开始输入,它不会将光标移动到文本字段的末尾。