input type=number验证问题
2016-11-02 16:17
225 查看
input type=number 中可以随意输入任意字符,但是如果该字符不是纯数字(负数,小数也行),对应dom元素的value就是空(""),这个事情非常坑,会导致验证的时候如果输入非数字的时候,直接.value(
或者$('.selector').val() )拿不到值,而拿不到值的情况下会认为没有填写,这样我就无法区分用户到底是输入了一些非法的字符如(20A)还是把input清空了。如果你页面上的一个框,要求格式须填数字格式,而又不是必填的,设置成number就会导致验证逻辑不正常。
比如jqueryvalidation框架的验证就不正常,因为它获取输入框值的时候用的.val()方式。
chrome中,
在.
这个属性里,可以判断值是否正常,如果填入了非正常值,这个属性就是true,正常值的话就是false。
但是火狐下.validity里没有badInput属性,它直接.value可以正常返回非数字的字符串。
IE8、9也可以直接.value获取到非数字的字符串值,不会返回空字符串。
或者$('.selector').val() )拿不到值,而拿不到值的情况下会认为没有填写,这样我就无法区分用户到底是输入了一些非法的字符如(20A)还是把input清空了。如果你页面上的一个框,要求格式须填数字格式,而又不是必填的,设置成number就会导致验证逻辑不正常。
比如jqueryvalidation框架的验证就不正常,因为它获取输入框值的时候用的.val()方式。
chrome中,
在.
currentTarget.validity.valid
这个属性里,可以判断值是否正常,如果填入了非正常值,这个属性就是true,正常值的话就是false。
但是火狐下.validity里没有badInput属性,它直接.value可以正常返回非数字的字符串。
IE8、9也可以直接.value获取到非数字的字符串值,不会返回空字符串。
相关文章推荐
- 开发问题:input type="number"可以输入字母e
- Html的input标签type属性为number,能输入e的问题
- andriod InputType.TYPE_NUMBER_FLAG_DECIMAL只能输入数字和小数点无效问题
- 完美解决input[type=number]无法显示非数字字符的问题
- 关于Html5中<input type="number" name="points" min="1" max="10" />只能输入整数的问题
- HTML5 input type=“number”的maxlength设置没效果问题
- input[type=number]问题
- JS表单提交验证、input(type=number) 去三角 刷新验证码
- Android 4.1.2 input type number时placeholder不显示的问题
- 前端杂记(1):表单提交验证、input(type=number) 去三角,刷新验证码
- 解决input[type=number]无法显示非数字字符的问题
- 移动端<input type = "number">问题
- 移动端限制两位小数并且弹出数字键盘(解决使用H5S使用input[type='number']不兼容JS的问题)
- 上传图片附件验证 input【type='file'】
- 【Android 界面效果39】android:inputType问题
- 关于<input type="text">不能显示空格的问题
- fastclick插件 导致 input[type="date"] 无法触发问题解决方案
- input[type='file']安卓手机微信端无法调用摄像头问题
- html5 input type="datetime-local"时间赋值问题
- 移除HTML5 input在type="number"时的上下小箭头