2011-03-29 106 views

回答

1

jQuery.keypress將讓你的事件,當用戶鍵入的東西,和String.fromCharCode讓你最棘手的部分是處理的字符選擇+ 1。

爲了獲得選擇,我使用了jQuery field selection插件,並確保它不會跳回到我使用的末尾this answer to another question。下面是最終代碼:

$(function() { 
    $("#target").keypress(function (evt) { 
     if (evt.which >= 65 && evt.which <= 122) { 
      var sel = $(this).getSelection(); 
      var val = $(this).val(); 
      var out = val.substring(0, sel.start) + String.fromCharCode(evt.which+1) + val.substring(sel.end, val.length); 
      $(this).val(out); 
      $(this).selectRange(sel.start + 1, sel.start + 1); 
      return false; 
     } 
    }); 
}); 

jsFiddle

我把它限制在-ZA-Z,但你可以自定義不過你想要的。

+0

的思考這也是,但用戶改變插入位置的情況如何呢?它會使新信件出現在最後而不是插入位置。我爲此創建了快速測試案例:http://jsfiddle.net/yahavbr/teeW9/ – 2011-03-29 23:29:45

+0

@Shadow好點...更新我的答案 – 2011-03-29 23:47:56

+0

好東東,甚至跨瀏覽器! :)好吧,不能超過我已經給的+1。順便說一句,你的答案缺少'selectRange'插件。 :) – 2011-03-29 23:53:31

0

我在Firefox和Chrome中測試了以下內容。使用「按鍵」允許使用其它鍵,並且採用則charCode允許使用較低和大寫字母:

document.getElementById("textbox").addEventListener("keypress",function(event){ 
    event.preventDefault(); 
    this.value+=(String.fromCharCode(event.charCode+1)) 
},false); 

我剛纔看到了jQuery的標籤,所以你也可以這樣做:

$("#textbox").bind("keypress",function(event){ 
    event.preventDefault(); 
    this.value+=(String.fromCharCode(event.charCode+1)); 
});