我正在构建一个非常简单的验证插件,它使用了约束验证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的原型,因此每个新实例都有这些方法和属性(validitycheckValidity等等)。
大致如下:

HTMLInputElement.prototype.testMethod = function (e) { console.log(e) };
HTMLInputElement.prototype.testProp = 'foo';
var input = document.createElement('input');
input.testMethod(input.testProp);

10-07 17:34