如何检查浏览器是否具有内置的HTML5表单验证功能?通过这样做,我们不需要在可以自己验证表单的浏览器上应用jQuery表单验证功能。
[解决] 根据ThinkingStiff的回答,这是一种方式:
if (typeof document.createElement("input").checkValidity == "function") {
alert("Your browser has built-in form validation!");
}
答案 0 :(得分:26)
只需检查checkValidity()
功能是否存在:
演示:http://jsfiddle.net/ThinkingStiff/cmSJw/
function hasFormValidation() {
return (typeof document.createElement( 'input' ).checkValidity == 'function');
};
这样称呼:
if( hasFormValidation() ) {
//HTML5 Form Validation supported
};
答案 1 :(得分:7)
您可以使用Modernizr javascript http://www.modernizr.com/执行此操作。您可以从此帖html5 form validation modernizr safari获取帮助。您还可以利用modernizr load
Modernizr.load()的基本语法是将具有以下属性的对象传递给它:
只要你提供其中一个,是和否都是可选的。
要在check_required.js中加载并执行脚本,请在将modernizr.adc.js附加到页面后添加以下块(代码在required_load.html中):
<script>
Modernizr.load({
test: Modernizr.input.required,
nope: 'js/check_required.js',
complete: function() {
init();
}
});
</script>
来源:http://www.adobe.com/devnet/dreamweaver/articles/using-modernizr.html
答案 2 :(得分:5)
怎么样
function hasFormValidation() {
return 'noValidate' in document.createElement('form');
}
答案 3 :(得分:5)
导航器存在问题,例如Android(4.4之前的版本),它实现checkValidity
(并且此功能实际上检查输入)但浏览器不向用户提供任何信息(并发送表格)如果某些输入无效。
但是,您可以使用validationMessage
检查是否有任何问题。此属性显示浏览器将向用户显示的错误消息。如果checkValidity()
为false,但没有validationMessage
,则浏览器没有完整的html5表单验证支持。
我已经完成了这个功能。它需要以下形式的所有字段作为参数:
canValidateFields() {
var result = typeof document.createElement( 'input' ).checkValidity == 'function';
if (result) {
for (var i = 0; i < arguments.length; i++) {
var element = document.getElementById(arguments[i]);
if (!element.checkValidity() && (!element.validationMessage || element.validationMessage === null || element.validationMessage === '')) {
return false;
}
}
}
return result;
}
答案 4 :(得分:2)
以下测试对Safari不起作用:
'noValidate' in document.createElement('form')
和
typeof document.createElement( 'input' ).checkValidity == 'function'
他们在预计true
时报告false
,因为Safari不会报告无效字段。
但是,此测试有效:
'reportValidity' in document.createElement('form')
(未在IE或Android上测试)
修改强>
Safari确实进行了验证,但没有报告,这解释了对这些测试的响应。可以通过CSS :invalid
伪类发现无效字段。这些测试的组合可用于验证浏览器不支持验证的位置,并报告浏览器不报告的位置。