2014-02-21 30 views
2

我的需求就像我需要替換文本框中的非字母字符我只有在用戶鍵入文本框時才實現它,但如果用戶複製粘貼這樣如何替換(複製粘貼)文本框中的非字母字符

「asd5653tYgh45Ghgs34gthth65TGhd」 一些值

預期值沒有被替換。這裏沒有被替換,爲了替換它,我需要再次執行keyup或keypress,之後只有值被替換。我附上了jsfiddle鏈接供您參考。

代碼:

HTML:

Name :<input type='text' id='txtName' /> 

的jQuery:

$("#txtName").on('keyup keypress',function(){ 
    var pattern = /^[a-zA-Z]+$/; 
    var txtval = $("#txtName").val(); 
    if(!pattern.test(txtval)){ 
     $(this).val($(this).val().replace(/[^a-zA-Z]+/,'')) 
    } 
}); 

鏈接:

Demo Fiddle

回答

6

這裏是您的解決方案:http://jsfiddle.net/9knXh/9/ 新pregmatch是/[^a-zA-Z]+/g末手段g執行所有除僅1 所以新的代碼:

$(this).val($(this).val().replace(/[^a-zA-Z]+/g,'')) 

編輯:我還補充更改爲使用鼠標右鍵粘貼的人

+0

它的工作現在,感謝您的幫助 – Vignesh

+0

我順便說一句編輯的代碼。因爲chnage需要在那裏使用正確的鼠標點擊粘貼 – Rickert

+0

如果你有一個maxlength屬性不是一個很好的解決方案.. – SamuelKDavis

2

在最後使用g來解決您的問題

http://jsfiddle.net/9knXh/7/

$("#txtName").on('keyup keypress',function(){ 
    var pattern = /^[a-zA-Z]+$/; 
    var txtval = $("#txtName").val(); 
    if(!pattern.test(txtval)){ 
     $(this).val($(this).val().replace(/[^a-zA-Z]+/g,'')) 
    } 
}); 
0

使用此代碼:

$("#txtName").on('keydown', (function() { 
    var keyCode = (event.keyCode) ? event.keyCode : event.which; 
    var isCtrl; 
    isCtrl = event.ctrlKey 
    if (isCtrl) { 
     if ('v' == String.fromCharCode(keyCode).toLowerCase()) { 
      `enter code here` 
     } 
    } 
    return true; 
}); 
相關問題