Javascript正则表达式仅文本框
问题描述:
我能够在c#/ .net中找到解决方案,但不能用于常规web html。如果已经有答案,请告诉我,我会解决问题。Javascript正则表达式仅文本框
如何根据给定的正则表达式(例如[a-zA-Z0-9])创建仅允许某些字符(例如字母数字)的文本框?所以如果用户试图输入其他东西,包括粘贴,它被删除或不允许。
<input type="text" class="alphanumericOnly">
答
的基本功能将是这样:
string = string.replace(/[^a-zA-Z0-9]/g, '')
这将替换未被[a-zA-Z0-9]
描述的任何字符。
现在你既可以把它直接到你的元素声明:
<input type="text" class="alphanumericOnly" onkeyup="this.value=this.value.replace(/[^a-zA-Z0-9]/g, '')">
或(如您使用的类提示)分配此行为以每input
元素与类alphanumericOnly
:
var inputElems = document.getElemenstByTagName("input");
for (var i=0; i<inputElems.length; i++) {
var elem = inputElems[i];
if (elem.nodeName == "INPUT" && /(?:^|\s+)alphanumericOnly(?:\s+|$)/.test(elem.className) {
elem.onkeyup = function() {
this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
}
}
}
但是,使用jQuery或其他JavaScript框架可能会更容易:
$("input.alphanumericOnly").bind("keyup", function(e) {
this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
});
答
假设你有存储为变量input
输入...
input.onkeyup(function(e) {
this.value = this.value.replace(/\W/g, '');
}
每一个按键后,输入的值将被剥夺的任何非字母数字字符。
答
如果您在键盘事件中使用.replace方法,输入将会随键入的非字母数字字符一起闪烁,这看起来马虎,并且不符合像我这样的OCD人员。
一个清洁的方法是绑定到按键事件,并否认字符之前,他们甚至到达输入,如下所示:
$('.alphanumericOnly').keypress(function(e){
var key = e.which;
return ((key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 95 && key <= 122));
});
基本键码的名单,可以发现here如果这个特定的设置不适合您的特定需求。
你甚至试图找到网络上已经存在的解决方案吗?我确信他们在那里,我不想成为你的打字员,所以去谷歌它,当你有关于详情的问题,回到这里 - 除非你想支付我为你写代码。 – 2009-04-28 20:31:22