使用WebShim Polyfill库时,我可以访问元素的默认validationMessage吗?
使用HTML5验证API时,可以截获错误、访问错误消息并以不同方式呈现 当使用WebShim Polyfill时,我希望它能以同样的方式工作,而不必访问customValidationMessage属性 是否有一种方法可以配置WebShim,以便我们可以编写一致的代码来拦截这些错误消息,如下所示使用WebShim Polyfill库时,我可以访问元素的默认validationMessage吗?,validation,webshim,Validation,Webshim,使用HTML5验证API时,可以截获错误、访问错误消息并以不同方式呈现 当使用WebShim Polyfill时,我希望它能以同样的方式工作,而不必访问customValidationMessage属性 是否有一种方法可以配置WebShim,以便我们可以编写一致的代码来拦截这些错误消息,如下所示 $(“输入”)。打开(“无效”,函数(evt){ evt.preventDefault(); 警报(evt.currentTarget.validationMessage); }); 。。。我希望这段代
$(“输入”)。打开(“无效”,函数(evt){
evt.preventDefault();
警报(evt.currentTarget.validationMessage);
});代码>
。。。我希望这段代码能在Polyfill中工作,也许我误解了它的设置或其他什么
我想这样做的原因是,我可以抓取所有无效字段,并在一个块中显示错误,而不是在每个字段旁边
谢谢,
尼克是的,这是可能的。如果设置正确,只需将调用更改为validationMessage即可。Webshims总是通过jQueryAPI修复元素,而不是DOM元素本身。这意味着你总是
您还可以使用eventdelegation:
$(function(){
$(document).on("invalid", function(evt) {
var message = $.prop(evt.target, "validationMessage");
if(message){
evt.preventDefault();
alert(message);
}
});
});
注:
invalid的Eventdelegation是通过事件捕获完成的(jQuery通常不使用)。因此,您必须等待直到加载polyfill。(通常情况下,jQuery的就绪事件会延迟到那时。)
我检查是否存在validationMessage,尽管存在无效事件。原因如下:规范发生了更改,现在表单元素上也触发了无效事件。这是目前唯一一个不稳定版本的webshims中的polyfilled,并且只适用于无法使用的浏览器(IE<12,Safari<8…)
$(function(){
$(document).on("invalid", function(evt) {
var message = $.prop(evt.target, "validationMessage");
if(message){
evt.preventDefault();
alert(message);
}
});
});