首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用WebShim Polyfill库时,我可以访问元素的默认validationMessage吗?

当使用WebShim Polyfill库时,我可以访问元素的默认validationMessage吗?
EN

Stack Overflow用户
提问于 2014-01-22 08:12:07
回答 1查看 130关注 0票数 0

使用HTML5验证应用编程接口时,可以截获错误,访问错误消息并以不同方式呈现错误消息。

在使用WebShim Polyfill时,我希望不用访问customValidationMessage属性就能以同样的方式工作。

有没有一种方法可以配置WebShim,这样我们就可以编写一致的代码来拦截这些错误消息,如下所示。

$("input").on("invalid", function(evt) { evt.preventDefault(); alert(evt.currentTarget.validationMessage); });

..。我希望这段代码能在Polyfill中工作,也许我误解了它是设置还是什么?

我想这样做的原因是,我可以抓取所有无效字段,并在一个块中显示错误,而不是每个字段旁边。

谢谢,尼克

EN

回答 1

Stack Overflow用户

发布于 2014-01-22 18:45:54

是的,这是可能的。如果一切都设置正确,您只需更改对validationMessage的调用。Webshim总是通过Webshims来修复元素,而不是jQuery元素本身。这意味着你总是have to use $.prop to access DOM properties

代码语言:javascript
复制
$("input").on("invalid", function(evt) { 
    evt.preventDefault(); 
    alert($.prop(evt.target, "validationMessage")); 
});

您还可以使用eventdelegation:

代码语言:javascript
复制
$(function(){
    $(document).on("invalid", function(evt) {
        var message = $.prop(evt.target, "validationMessage");
        if(message){
            evt.preventDefault();
            alert(message);
        }
    });
});

注意:

无效的

  1. Eventdelegation是通过事件捕获完成的(jQuery通常不会使用事件捕获)。因此,您必须等待,直到加载polyfill。(通常情况下,jQuery的ready事件会一直延迟到那个时候。)
  2. 我会检查validationMessage是否存在,尽管有无效的事件。原因如下:规范发生了变化,现在还在form元素上触发了一个无效事件。这目前只在webshims的不稳定版本中进行了多填充,并且仅适用于无法使用的浏览器(IE < 12,Safari <8...)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21271731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档