2016-04-25 70 views
2

我正在使用oninvalid event來定製錯誤驗證消息。顯然它不是supported在我的測試中確認的Internet Explorer中。我必須支持IE 11.那裏有什麼樣的解決方法?oninvalid event&Internet Explorer?

編輯:
也許它會更容易,如果我表現出的代碼示例正是我在做什麼

"using strict"; 

(function setCustomValidation(doc) { 
    var elems = doc.querySelectorAll("[required]"); 


    _.forEach(elems, 
     function (item) { 
      item.oninvalid = function(e) { 
       e.target.setCustomValidity(""); 
       if (!e.target.validity.valid) { 
        e.target.setCustomValidity(e.target.getAttribute("data-errormessage")); 
       } 
      }; 
     }); 
})(document); 

我正在做一個共享的工具,它允許一個上放一個自定義錯誤消息任何必需的元素。所以你不會在瀏覽器中遇到默認的錯誤信息。我不確定oninput, onchage, & onblur是否適用於此目的。如我錯了請糾正我。

這裏是一個jsbin

+0

oninput。 onchange和onblur都可以使用。你可以只做'onchange =「if(!this.checkValidity())this.oninvalid(event)」'或者類似的東西,如果你從JS綁定oninvalid作爲處理器。 – dandavis

+0

你用它做什麼? –

回答

0

我有同樣的問題,我的代碼wasnt在IE11既不 射擊無效的情況下,我改變

item.oninvalid = (e) => { ... } 

item.addEventListener('invalid', (e) => { ... }); 

和它的工作。希望它仍然可以幫助你(或任何碰到此問題的人)