den*_*s_n 10 javascript validation html5
出于某种原因,当我使用异步请求时,不会显示html5验证消息.
在这里你可以看到一个例子.
setTimeout(function() {
...
//this is not working
target.setCustomValidity('failed!');
...
}, 1000);
Run Code Online (Sandbox Code Playgroud)
如果未选中复选框,则一切都按预期工作,但检查时,该消息不可见.
有人可以解释应该做什么吗?
我想通了,结果是HTML5验证消息只会在表单提交正在进行时弹出.
以下是我的解决方案背后的过程(检查超时时):
forceValidation标志forceValidation设置了标志,则显示验证消息基本上执行两个提交,第一个由按钮触发,第二个在调用超时函数时触发.
var lbl = $("#lbl");
var target = $("#id")[0];
var forceValidation = false;
$("form").submit(function(){
return false;
});
$("button").click(function (){
var useTimeout = $("#chx").is(":checked");
lbl.text("processing...");
lbl.removeClass("failed");
target.setCustomValidity('');
showValidity();
if (forceValidation) {
forceValidation = false;
lbl.text("invalid!");
lbl.addClass("failed");
target.setCustomValidity('failed!');
showValidity();
} else if (useTimeout) {
setTimeout(function () {
forceValidation = true;
$("button").click();
}, 1000);
} else {
lbl.text("invalid without timeout!");
lbl.addClass("failed");
target.setCustomValidity('failed!');
showValidity();
}
});
function showValidity() {
$("#lbl2").text(target.checkValidity());
};
Run Code Online (Sandbox Code Playgroud)
我在Chrome版本25.0.1364.172 m上运行.
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |