【问题标题】:restrict user input using javascript使用 javascript 限制用户输入
【发布时间】:2009-03-18 09:14:44
【问题描述】:

谁能给我看一些限制 Javascript 中用户输入(在输入标签上)的例子吗?

当我们将输入 (type="text") 设置为仅接受数字时,它会忽略除数字之外的任何其他输入...

我认为数字输入很方便(例如邮编、信用卡、货币、价值、分数、日期等...),如果可以的话,请告诉我如何使用模式创建输入,例如:

请输入日期: |-----------------| | // | |-----------------|

PS: 我听说 WebForms 2.0 将来会支持这个……(Acid 3 兼容浏览器?)

输入类型="日期"
输入类型="时间"
输入类型=“数字”
输入类型=“钱”

但这只是来自未来的新闻:D

【问题讨论】:

    标签: javascript html user-interface input


    【解决方案1】:

    这可能会对你有所帮助。

    http://www.w3schools.com/jsref/event_onkeydown.asp

    <html>
    <body>
    
    <script type="text/javascript">
    function noNumbers(e)
    {
    var keynum;
    var keychar;
    var numcheck;
    
    if(window.event) // IE
    {
    keynum = e.keyCode;
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
    keynum = e.which;
    }
    keychar = String.fromCharCode(keynum);
    numcheck = /\d/;
    return !numcheck.test(keychar);
    }
    </script>
    
    <form>
    <input type="text" onkeydown="return noNumbers(event)" />
    </form>
    
    </body>
    </html>
    

    【讨论】:

    • 是的,这适用于简单的字符过滤......但是像日期(“mm/dd/yy”)这样的成熟格式呢?如果格式不正确,您不能只返回 false,否则您将永远无法输入第一个数字。
    • 不是这样,但它给出了一个关于如何制作它的想法。外汇。您只能在日期字符串的第一个字符中键入 0 和 1。如果用户在上面输入一个数字,则该数字不会被注册。但是是的,这个特定的代码并不能完全发挥作用。
    • 是的,我只是为了清楚起见发表了评论;)
    【解决方案2】:

    这个问题已经有一个公认的答案,但我认为有更好的解决方案。您不必自己在 keydown 等上实现它,有相应的库。他们将您描述的技术称为“输入掩码”。查看this jQuery plugin,它完全符合您的要求。

    【讨论】:

    • 这个 jQuery 插件很棒。
    • 我喜欢这个插件,但问题仍然存在于多个 Android 设备上,无论是原生还是 chrome 浏览器都存在太多问题。在大多数情况下,当涉及到 Android 时,我通常最终会完全移除面具。
    【解决方案3】:

    您可以在表单提交时使用特定的库,例如 jQuery Validate(或任何您的 JS 框架提供的)。另一种解决方案是控制 keyUp 和 blur 事件的值,但决定如何处理格式错误的条目可能会变得非常混乱(尤其是当格式有点复杂时——即不仅仅是不想要的字符)。所以,总而言之,我建议在提交时使用客户端控制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多