Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何限制输入元素中允许的字符集?_Javascript_Jquery_Html_Validation - Fatal编程技术网

Javascript 如何限制输入元素中允许的字符集?

Javascript 如何限制输入元素中允许的字符集?,javascript,jquery,html,validation,Javascript,Jquery,Html,Validation,我知道以前有人问过这个问题,但我在这里看到的所有解决方案都有一些局限性 我试图实现的目标是:我有一个输入字段,只允许输入或粘贴字母数字字符,总长度不得超过N个字符。它应该适用于移动浏览器 到目前为止,我所尝试的: 输入事件。仅在焦点丢失时触发 onkeypress事件(返回this.value.length=65&&event.keyCode=97&&event.keyCode=48&&event.keyCode我曾经需要做同样的事情,我发现最好的解决方案是在每次输入字段更改时调用一个侦听器。为

我知道以前有人问过这个问题,但我在这里看到的所有解决方案都有一些局限性

我试图实现的目标是:我有一个输入字段,只允许输入或粘贴字母数字字符,总长度不得超过N个字符。它应该适用于移动浏览器

到目前为止,我所尝试的:

  • 输入事件。仅在焦点丢失时触发

  • onkeypress事件(
    返回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">