【问题标题】:Setting an input to its most recent valid value将输入设置为其最近的有效值
【发布时间】:2012-01-25 21:21:45
【问题描述】:

我正在尝试为 HTML5 的 input type="number" 元素编写一个 polyfill。 Here's a comparative example 如果您的浏览器已经支持它。

如果您输入的值无法解析为数字,例如“abc”,则当您进行模糊处理时,Chrome 会将该值设置回您最近的有效值。我想我可以通过在字段获得焦点时将值存储在 data- 属性中来做到这一点,以防万一我需要将其设置回来,但是有没有更自然的方法来“记住”最近的有效值有一个表单域吗?

【问题讨论】:

    标签: javascript html validation polyfills


    【解决方案1】:

    这通常称为撤消This fellow 向您展示了如何使用 JavaScript:

    <html>
       <head>
          <title>Title</title>
          <script type="text/javascript" language="javascript">
             function InputBalance_OnChange(sender) {
                if(isNaN(sender.value)) {
                   sender.value = isNaN(sender.prevValue) ? 0 : sender.prevValue;
                } else {
                   sender.prevValue = sender.value;
                }
             }
          </script>
       </head>
       <body>
          <table>
             <tr>
                <td>Account Number</td>
                <td><input id="inputAccountNumber" type="text" /></td>
             </tr>
             <tr>
                <td>Balance</td>
                <td><input id="inputBalance" type="text" onChange="InputBalance_OnChange(this)" value="0" /></td>
             </tr>
          </table>
       </body>
    </html> 
    

    【讨论】:

    • 说得太早了。 prevValue 属性似乎用于属性修改,并且似乎不是我正在处理的事件类型的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2019-05-07
    • 2020-05-27
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多