2012-08-16 52 views
1

我如何允許特殊字符,如連字符,逗號,斜槓,空格鍵,退格鍵,刪除鍵以及字母數字值,並在jQuery中限制其餘部分?如何只允許定義的字符作爲使用jQuery的輸入?

由於此標準(允許的字符/輸入值)因字段而異,因此我希望將其作爲接受輸入字段ID和允許的字符作爲參數的實用程序方法。 例如:limitCharacters(文本ID,圖案)

+1

你有你嘗試的任何代碼樣本? – o01 2012-08-16 11:27:01

+0

謝謝大家的幫助...現在我需要比較非英文字符..如Azhari ..我如何做模式匹配?基本上我的應用程序應該支持英文和阿扎裏字符..在這裏我感到震驚。請幫助我... – 2012-08-16 17:32:56

回答

5

您只需檢查​​的鍵碼,運行preventDefault()如果匹配:

$('input').keydown(function(e) { 
    if (e.which == 8) { // 8 is backspace 
     e.preventDefault(); 
    } 
});​ 

http://jsfiddle.net/GVb6L/

如果您需要限制某些字符和鍵碼+使之成爲一個jQuery插件,你可以試試:

$.fn.restrict = function(chars) { 
    return this.keydown(function(e) { 
     var found = false, i = -1; 
     while(chars[++i] && !found) { 
      found = chars[i] == String.fromCharCode(e.which).toLowerCase() || 
        chars[i] == e.which; 
     } 
     found || e.preventDefault(); 
    }); 
}; 

$('input').restrict(['a',8,'b']);​ 

http://jsfiddle.net/DHCUg/

+0

這不符合點(。)順便說一句。 – burzum 2013-07-23 10:18:47

+0

這不適用於一些字符,如0和/例如,但是是一個很好的函數來限制字母和數字。 – Carlos 2014-07-29 22:00:48

1

我做了這樣的事情,但在jQuery插件格式。這個例子只允許數字和句號。

您可以通過編寫調用這個:

$("input").forceNumeric(); 

和插件:

  jQuery.fn.forceNumeric = function() { 

      return this.each(function() { 
       $(this).keydown(function (e) { 
        var key = e.which || e.keyCode; 

        if (!e.shiftKey && !e.altKey && !e.ctrlKey && 
        // numbers 
         key >= 48 && key <= 57 || 
        // Numeric keypad 
         key >= 96 && key <= 105 || 
        // comma, period and minus, . on keypad 
         key == 190 || key == 188 || key == 109 || key == 110 || 
        // Backspace and Tab and Enter 
         key == 8 || key == 9 || key == 13 || 
        // Home and End 
         key == 35 || key == 36 || 
        // left and right arrows 
         key == 37 || key == 39 || 
        // Del and Ins 
         key == 46 || key == 45) 
         return true; 

        return false; 
       }); 
      }); 
     } 
0

我會建議使用組合鍵的大衛解決像退格刪除這代碼如下字符:

var chars = /[,\/\w]/i; // all valid characters 
$('input').keyup(function(e) { 
    var value = this.value; 
    var char = value[value.length-1]; 
    if (!chars.test(char)) { 
    $(this).val(value.substring(0, value.length-1)); 
    } 
}); 

此外,我遇到了​​的一些問題,所以我會在keyup上做。

演示:http://jsfiddle.net/elclanrs/QjVGV/(請嘗試輸入點.或分號;

+0

如果按住'.'鍵,則失敗 – David 2012-08-16 11:57:31

相關問題