我使用以下方法防止使用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);
让我知道我哪里出错了。任何建议都会很棒。
提前致谢!
答案 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);