Javascript 如何限制输入元素中允许的字符集?
我知道以前有人问过这个问题,但我在这里看到的所有解决方案都有一些局限性 我试图实现的目标是:我有一个输入字段,只允许输入或粘贴字母数字字符,总长度不得超过N个字符。它应该适用于移动浏览器 到目前为止,我所尝试的:Javascript 如何限制输入元素中允许的字符集?,javascript,jquery,html,validation,Javascript,Jquery,Html,Validation,我知道以前有人问过这个问题,但我在这里看到的所有解决方案都有一些局限性 我试图实现的目标是:我有一个输入字段,只允许输入或粘贴字母数字字符,总长度不得超过N个字符。它应该适用于移动浏览器 到目前为止,我所尝试的: 输入事件。仅在焦点丢失时触发 onkeypress事件(返回this.value.length=65&&event.keyCode=97&&event.keyCode=48&&event.keyCode我曾经需要做同样的事情,我发现最好的解决方案是在每次输入字段更改时调用一个侦听器。为
返回this.value.length<8&&(event.keyCode>=65&&event.keyCode=97&&event.keyCode=48&&event.keyCode我曾经需要做同样的事情,我发现最好的解决方案是在每次输入字段更改时调用一个侦听器。为此,您应该能够使用oninput
html属性或相应的input
javascript事件
从W3Schools可以很好地演示它是如何响应输入更改的。特别是,它不仅在焦点丢失时启动,而且在粘贴文本时也能工作。当然,在侦听器中,您可以检查输入中的当前文本是否符合所需
使用此解决方案更酷的是,您甚至可以从侦听器中编辑输入字段中的文本。为此,您需要使用addEventListener(…)
,将侦听器添加到javascript中的input
事件中,然后只需使用this.value='newtext';
如何使用
加上
和当您将type=number属性放置到输入时,使用Html5输入内置的验证将阻止非数字输入。如果您想设置允许输入的最大数字,也可以使用max属性。您仍然需要实现某种类型的客户端代码,以防止使用较旧浏览器的数字,但basiHtml5验证在任何像样的“真实”浏览器(Chrome、Firefox,即v9+等)上都能为您做很多工作
是输入类型=“编号”上的文档
- 元素会自动使任何条目无效
这不是一个数字(或为空,除非指定了required)
- 可以使用required属性使空条目无效,
i、 e.必须填写输入
- 可以使用“步长”属性将有效值约束到某个特定值
一组步骤(例如10的倍数)
- 可以使用“最小”和“最大”属性将有效值约束到
上下限
像往常一样,使用oninput
事件而不是keyevents。input
事件肯定会在输入元素的每次更改时触发,只有当焦点丢失时才会触发onchange
事件。谢谢!但是如何限制oninput
事件中的字符集?我尝试了this.value=this.value.substring(0,8).更换(/[^a-zA-Z0-9]/g'),但是当用户在中间插入一些东西时,光标被移动到输入控件的末尾。那么,你现在所做的是在每次输入改变时替换值,即使在这不是必要的时候,你可以做的来防止光标移动到末尾,来测试新文本是否违反了某些条件。ons(在这种情况下,如果长度超过8个字符,或者如果包含范围a-z、a-z和0-9以外的字符)在这种情况下只更新值。如何防止在oninput
事件中更新值?感谢您的回答,但是type=numeric
不符合我的需要,因为我需要字母数字输入。必需
属性影响表单提交,而不是输入。
<input type="text" pattern="[A-Za-z]{3}" title="Three letters">
<input type="text" pattern="[0-9]{3}" title="Three numbers">
<input type="text" pattern="[A-Za-z0-9]{3}" title="Three alphanumeric">