我正在构建一个非常简单的验证插件,它使用了约束验证API的一部分。我正在使用API的两个特性valueMissing和patternmatch,如下所示:
var el = $(this)[0];
if ( el.validity.valueMissing || el.validity.patternMismatch ) {
$errMsg.show();
} else {
$errMsg.hide();
}
我想写我自己的polyfill,这样这些功能就可以在老浏览器中工作,而不是使用整个HTML5验证库或插件。
所以我想我要达到的目标是这样的:
if (!typeof document.createElement( 'input' ).checkValidity == 'function'){
validity.valueMissing = function(){
// check for value
}
}
但是,我不知道如何实现这一点,也不知道如何将元素用作函数的第一部分:
el.validity.valueMissing
提前感谢您的帮助和建议!
最佳答案
这个poly需要做一些工作,但您需要做的是改变HTMLInputElement
的原型,因此每个新实例都有这些方法和属性(validity
,checkValidity
等等)。
大致如下:
HTMLInputElement.prototype.testMethod = function (e) { console.log(e) };
HTMLInputElement.prototype.testProp = 'foo';
var input = document.createElement('input');
input.testMethod(input.testProp);