从输入类型='数字'中获取无效内容

时间:2014-05-28 15:03:45

标签: javascript html html5 validation decimal-point

我有一个带有输入的表单,例如:

<form>
    <input type='number' id='nb'>
</form>

现在,问题如下:

当用户输入无效数字时,我无法获得原始输入以尝试自行修复。

例如,根据区域设置,以下数字可能无效:

400 000
43,2
43.2

第一个可以来自复制/粘贴,另外两个来自设备的错误配置,或者使用未使用用户母语配置的设备。

我尝试将novalidate添加到表单和输入中,但它不会更改任何内容。

我知道input.validity.valid返回false并且通常input.validity.badInput将为真,因此我可以向用户显示消息,但消息可能是非特定且令人困惑的,尤其是因为小数点问题可以很容易地识别和修复,并且在现场测试中很常见。

我试图动态更改输入的类型(因此它在移动设备上显示键盘),但每次更改类型时,该值都会被清除。

我已考虑通过拦截keydown事件来阻止输入无效字符,但这并不能解决复制粘贴问题。

我也考虑过跟踪完整的输入,但考虑到所有可能的输入情况(仅提及复制粘贴),这是不合理的。

我已阅读this question,但我对答案不满意。输入在屏幕上,我可以看到,我看不出有什么好理由我无法阅读它。

修改

jsfiddle:http://jsfiddle.net/AXu92/

0 个答案:

没有答案