这是小提琴 http://jsfiddle.net/HGJb3/
HTML
<input class="anything" type="text">
<input type="text">
<input id="someid" type="text">
<input type="text">
<input id="someotherid" type="text">
<input type="text">
<input type ="text">
<br />
<br />
<br />
working one
<input id="text" type="text">
JS
$('#text').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)) {
return true;
}
e.preventDefault();
return false;
});
现在我想对所有文本框应用此按键功能,而不仅仅是最后一个。如何编辑此功能以使其适用于所有人?
不能把所有的ID都放一样。
必须使其适用于@ html.textBoxFor - 可以将datannootation放在模型中,这就是为什么
答案 0 :(得分:1)
您可以尝试使用此输入文本框:小提琴Working fiddle
$('input[type="text"]').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)) {
return true;
}
e.preventDefault();
return false;
});
答案 1 :(得分:1)
就像你说的那样(不能将所有的ID相同),这根据HTML无效,因为在单个页面中,您不能对多个元素使用相同的Id。即使你将相同的Id分配给几个元素,但是当从客户端使用id获取该元素时,它将从TOP中获取DOM中的第一个元素。
因此,在这种情况下,为要应用该正则表达式的所有文本框分配一个公共类,然后将该公共类上的keypress事件绑定为选择器。
HTML
<input class="textClass anything" type="text">
<input class="textClass" type="text">
<input class="textClass" id="someid" type="text">
<input class="textClass" type="text">
<input class="textClass" id="someotherid" type="text">
<input class="textClass" type="text">
<input class="textClass" type="text">
<br />
<br />
<br />
working one
<input class="textClass" id ="text" type="text">
JS
$('.textClass').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)) {
return true;
}
e.preventDefault();
return false;
});
我希望这适合你:)
答案 2 :(得分:0)
Just change your selector to "input:text" if you are using textbox
$('input:text').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)) {
return true;
}
e.preventDefault();
return false;
});