当前位置 : 主页 > 网页制作 > JQuery >

使用jQuery验证数字类型输入

来源:互联网 收集:自由互联 发布时间:2021-06-15
我有一个非常复杂的问题,在指定了type =“number”的可选字段上处理jQuery验证.会发生什么情况是浏览器(在这种情况下是Chrome)允许用户在字段中输入正常字母,并想要拦截表单的提交,无论
我有一个非常复杂的问题,在指定了type =“number”的可选字段上处理jQuery验证.会发生什么情况是浏览器(在这种情况下是Chrome)允许用户在字段中输入正常字母,并想要拦截表单的提交,无论如何,当查询字段值时,它将返回一个空字符串.

在继续之前,我必须说这与specs一致,它表示:

User agents must not allow the user to set the value to a non-empty string that is not a valid floating-point number.

后来:

The value sanitization algorithm is as follows: If the value of the element is not a valid floating-point number, then set it to the empty string instead.

问题在于:如果我在可选数字输入字段中输入字母(并且Chrome允许),则jQuery验证会获得一个空字符串值,该值正确验证,因为该字段是可选的.此外,我得到了emtpy字符串服务器端,因为该字段在数据库中可以为空并且很高兴得到保存.

目前,我能想到的唯一解决方法是:

$('input[type="number"]').keypress(function (evt) {
    if (evt.keyCode < 48 || evt.keyCode > 57)
        evt.preventDefault();
});

问题是上述情况不起作用,例如,如果用户在那里复制粘贴一些错误的输入.现在,我意识到,如果用户如此决心输入愚蠢的数据,他只能面对后果并使该字段无效,但试图成为一名优秀的开发人员,我想知道是否有办法获得输入的值而不使用上面的workarond(也没有为copypaste写另一个解决方法).

jquery.alphanum是我写的一个插件,用于防止首先输入无效文本.它可以很好地处理复制粘贴,并且是跨浏览器兼容的.

$('input[type="number"]').numeric();

该插件会捕获粘贴事件,并在文本对用户可见之前对其进行过滤.

网友评论