【发布时间】:2012-12-30 08:23:54
【问题描述】:
我正在尝试对模糊的数字输入字段进行简单的检查有效性,但无法使其正常工作。这在 Chrome 中还有效吗?例如:
<input onBlur="checkValidity()" type="number" name="x" id="x" min="64" max="2048" value=64>
或
<input onBlur="this.checkValidity()" type="number" name="x" id="x" min="64" max="2048" value=64>
似乎什么也没做。但是,在控制台中,
$("#x")[0].checkValidity()
根据输入框中的当前值和上述 (64,2048) 的限制返回 true 或 false。这是坏了,还是我做错了?
【问题讨论】:
-
您自己提到了这一点:“
checkValidity()确实返回真或假”,因此该方法似乎返回一个值,告诉您脚本是否有效,而不是实际做某事(例如提示用户、阻止输入等)。因此,您的onblur事件处理程序实际上“有效”,它只是不做 UI 的事情。 -
是的,它没有抛出错误。当我实际提交表单时,验证确实有效,并且存在输入错误的弹出窗口。这些就是我想要的 onBlur...
-
我猜您想在用户“完成”输入时触发验证弹出窗口?这是不可能的,因为这是浏览器的行为,而不是 HTML 规范。您可以使用
if(!obj.checkValidity()){...}以某种方式“模拟”该行为。 -
是的,这就是我想要的。在用户在上面的字段中输入无效数字并模糊到下一个字段后,在他们实际提交之前提醒他们注意错误,并且可能会出现多个错误。
-
似乎没有办法让浏览器默认操作(当 checkValidity() 失败时)触发,除非您执行完整提交。这有点可惜。
标签: javascript html google-chrome validation