如何防止javascript功能重复?

如何防止javascript功能重复?,javascript,jquery,Javascript,Jquery,我使用以下方法来防止在jQuery的ID为A、B和C的输入框中键入特殊字符,并按预期工作。这在(文档)上发生。准备就绪 $("[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

我使用以下方法来防止在jQuery的ID为A、B和C的输入框中键入特殊字符,并按预期工作。这在(文档)上发生。准备就绪

$("[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;
                });   

}
并称之为:

 blockSpecialChar(A);
让我知道我哪里做错了。任何建议都很好


提前谢谢

您已经传递了元素的
id
,但您正在将其用作
字符串

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;
   });   

}

只需将其作为单独的功能:

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);

请显示您的
html
请仅使用该属性,并让他们知道css
:invalid
输入不可接受。这不会阻止我粘贴特殊字符是的,你是对的。谢谢@This lau。成功了。天哪,我还远远没有接近呢:D