防止在字段中输入无效字符:综合指南
P粉124890778
2023-08-27 21:06:52
<p><code>Onkeydown</code>,我运行以下 JavaScript:</p>
<pre class="brush:php;toolbar:false;">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;
}
}</pre>
<p>这三个标题属性之一被赋予页面上的各个输入字段。只要正确删除无效字符,该代码就可以工作,但直到输入下一个字符为止。我想找到一种方法来简单地拒绝无效输入。感谢您的帮助!</p>
<p><strong>编辑</strong>:我在全球范围内创建事件。我是这样做的:</p>
<pre class="brush:php;toolbar:false;">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]);
}
}</pre>
<p><code>全球化()</code>运行<code>body.onload</code></p>
<p>因此,典型的输入字段具有 HTML,没有像这样的函数调用:</p>
<pre class="brush:php;toolbar:false;"><input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/></pre>
<p><br /></p>
上面的代码确实说明了这一点——只允许数字。您可以通过添加异常来修改它,例如像这样的 BACKSPACE
为了防止它首先被设置,您可以在 keydown 事件处理程序上返回 false,从而防止事件进一步传播。
我使用 jQuery 编写了下面的示例,但是您可以在传统绑定时使用相同的函数。
尽管在服务器端验证也很重要,但为了用户友好性,客户端验证也很重要。