2016-12-15 17 views
1

我正在使用以下方法來防止特殊字符輸入到帶有jQuery的A,B和C的輸入框中,並且按預期工作。這發生在(document).ready如何防止我的JavaScript功能重複?

$("[id$='A']").keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
});  
$("[id$='B']").keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
}); 
$("[id$='C']").keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
} 

我想弄清楚一種常用的方法,而不是再次寫入函數。這是我試過......

function blockSpecialChar(passId){ 
    var tempId = $("[id$ ='passId']"); 
       tempId.keypress(function (e) { 
        var regex = new RegExp("^[a-zA-Z0-9]+$"); 
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
        if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
         return true; 
        }     
        e.preventDefault(); 
        return false; 
       }); 

} 

,並通過調用它:

​​

讓我知道我要去哪裏錯了。任何建議都會很棒。

在此先感謝!

+0

請出示你的'html' – Mairaj

+1

請只使用[模式](https://developer.mozilla.org/en/docs/Web/HTML/Element/input#attr-pattern)屬性,並讓他們知道什麼時候不能用css':invalid'輸入。這不會阻止我粘貼特殊字符 – Endless

+0

是的,你是對的。 – MnZ

回答

1

只是使它成爲一個獨立的功能:

function blockSpecialChar(e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
} 

$("[id$='A'], [id$='B'], [id$='C']").keypress(blockSpecialChar); 
+0

Thanks @ this-lau。有效。男孩,我離得很近:D – MnZ

1

您已通過元素的id,但你使用它作爲string

function blockSpecialChar(passId){ 
    var tempId = $("[id$ ='"+passId+"']"); 
    tempId.keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
    }); 

}