如何防止我的javascript功能重复?

时间:2016-12-15 11:31:39

标签: javascript jquery

我使用以下方法防止使用jQuery将特殊字符输入带有ID A,B和C的输入框,并且按预期工作。这发生在 (文档).ready

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

让我知道我哪里出错了。任何建议都会很棒。

提前致谢!

2 个答案:

答案 0 :(得分: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;
   });   

}

答案 1 :(得分: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);