2015-06-29 24 views
0

當我輸入上面的字符時,它有兩個輸入,它同時寫入最下面的一個。我有一個字母i和信ı但在英語中,他們有相同的大寫字母的不同I所以我寫了下面的代碼來解決這個問題:在jQuery中,當你輸入字母中間的字符時,最後一個字符是

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

'我有兩個輸入'你的代碼示例中的第二個輸入在哪裏?你能創造一個這樣的小提琴嗎? – Mivaweb

+0

與其他頁面相同的頁面。 @Mivaweb – Seuphoria

+0

我同意@Mivaweb,因爲它不清楚你在說什麼。也許你可以包含一個JSFiddle或添加代碼片段來說明問題。 – Huey

回答

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,就像普通文本字段一樣。它也保持你的光標位置,所以如果你開始在輸入中間輸入,它不會將你的光標移動到文本字段的末尾。

+0

非常感謝你的工作。 – Seuphoria

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

+0

@Dave Chen的答案解決了問題,當我嘗試你的代碼時,我無法在第二個輸入。 – Seuphoria

相關問題