HTML5 Chrome checkValidity onBlur
HTML5 Chrome checkValidity onBlur
我试图在模糊上做一个简单的数字输入字段的checkValidity,但不能让它正常工作。这在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。这是坏了,还是我做错了?
我意识到这个问题已经存在许多年了,但是如果其他人遇到它,实现OP想要的行为的正确方法似乎是使用onblur="reportValidity()"
而不是onblur="checkValidity"
。
这是您可能想要的一个演示:
http://jsfiddle.net/9gSZS/<input type="number" min="64" max="256" onblur="validate(this);" />
function validate(obj)
{
if(!obj.checkValidity())
{
alert("You have invalid input. Correct it!");
obj.focus();
}
}
请注意,我只是在演示概念在这里;alert
可能会导致非常不愉快的体验,所以不要直接复制。
使用一些浮动DIV来吸引用户,而不是完全阻塞的alert
。
你应该使用onChange Event
例如var input1 = document.getElementById('txt_username');
input1.onchange = function(){
input1.setCustomValidity(input1.validity.patternMismatch ? 'username must match a-z,A-Z,0-9,4-16 character' : '');
}
这是一个解决方案
$("form").focusout(function(){
if(!$("form")[0].checkValidity()){
setTimeout(function(){$(":submit").eq(0).trigger('click');},0);
}
});
如果您的任何表单元素失去焦点,您检查表单有效性。如果表单无效,请使用jquery单击第一个提交按钮。由于某种原因,必须使用超时才能使其工作。timeout为0只是将函数移动到函数队列的末尾。
onblur="checkValidity()"
无效,因为blur
事件不可取消。
相关文章:
- Javascript-onblur函数无法更改文本框的值
- Window.onblur-禁用iframe事件
- 如何在yii中在同一行中给出onblur和onkeypress,这是可能的吗
- Jquery,onBlur-如果不为空,则显示警报
- onblur事件时,输入被强制聚焦
- OnFocus OnBlur with ASP.NET
- 仅在按下 Tab 键时调用 onBlur 事件
- Jquery onblur 第二次不起作用
- IE Onblur和焦点问题
- 你能用onblur事件调用一个外部Javascript吗
- OnClick事件正在绕过onBlur事件
- 在使用onblur进行输入评估时,是否可以获得单击对象的元素id
- onblur文本框生成电子邮件已存在于数据库中的警报
- Onblur,Onfocus javascript for TextMode=“MultiLine” 不起作用
- 使用数字OnfocusOut/OnBlur格式化文本框
- OnFocus Onblur issue JavaScript 多个 instace of 同一字段
- 使用Javascript从父onblur关闭子窗口
- javascript问题后的onblur和onfocus
- 如何使用CustomValidator(使用JS)验证OnBlur或OnChange
- HTML5 Chrome checkValidity onBlur