【发布时间】:2011-11-26 22:56:33
【问题描述】:
Onkeydown,我运行以下 JavaScript:
function ThisOnKeyDown(el) {
if (el.title == 'textonly') {
!(/^[A-Za-zÑñ-\s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ-\s]/ig, '') : null;
}
if (el.title == 'numbersonly') {
!(/^[0-9]*$/i).test(el.value) ? el.value = el.value.replace(/[^0-9]/ig, '') : null;
}
if (el.title == 'textandnumbers') {
!(/^[A-Za-zÑñ0-9-\s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ0-9-\s]/ig, '') : null;
}
}
这三个标题属性之一被赋予页面上的各种输入字段。只要正确擦除无效字符,该代码就可以工作,但直到输入下一个字符。我想找到一种方法来简单地拒绝无效输入。感谢您的帮助!
编辑:我在全局范围内创建事件。我是这样做的:
function Globalization() {
var inputs = document.getElementsByTagName('input');
for (i = 0; i < inputs.length; i++) {
inputs[i].onfocus = createEventHandler(
ThisOnFocus, inputs[i]);
inputs[i].onblur = createEventHandler(
ThisOnBlur, inputs[i]);
inputs[i].onkeydown = createEventHandler(
ThisOnKeyDown, inputs[i]);
inputs[i].onkeyup = createEventHandler(
ThisOnKeyUp, inputs[i]);
}
}
Globalization() 运行 body.onload
因此,一个典型的输入字段有 HTML 没有这样的函数调用:
<input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/>
【问题讨论】:
-
将此函数添加到
OnKeyPress和OnKeyUp -
请记住,这种验证是不够的,你总是在服务器端删除这个字符。
-
@sll,添加到 Onkeyup 会产生退格效果。 (Onkeypress 也一样)。我想要做的是拒绝出现输入。
标签: javascript regex dom-events