【发布时间】:2023-03-21 02:30:02
【问题描述】:
我有一个经常使用 HTML5 required 属性的 Web 应用程序。然而 Safari 和 ie 8/9 不支持这个属性。是否有 jQuery 插件可以强制在不兼容的浏览器上执行该行为?
【问题讨论】:
我有一个经常使用 HTML5 required 属性的 Web 应用程序。然而 Safari 和 ie 8/9 不支持这个属性。是否有 jQuery 插件可以强制在不兼容的浏览器上执行该行为?
【问题讨论】:
这无需任何插件即可工作(仅限 JQuery):
<script>
// fix for IE < 11
if ($("<input />").prop("required") === undefined) {
$(document).on("submit", function(e) {
$(this)
.find("input, select, textarea")
.filter("[required]")
.filter(function() { return this.value == ''; })
.each(function() {
e.preventDefault();
$(this).css({ "border-color":"red" });
alert( $(this).prev('label').html() + " is required!");
});
});
}
</script>
【讨论】:
你可以简单地填充它......
if ($("<input />").prop("required") === undefined) {
$(document).on("submit", function(event) {
$(this)
.find("input, select, textarea")
.filter("[required]")
.filter(function() { return this.value; })
.each(function() {
// Handle them.
});
});
}
【讨论】:
.filter(function() { return this.value; }) 不会只包含空表单字段,而是会排除所有空表单字段,因此您最终会得到所有必需且具有内容的字段,而不是缺少内容的所有必填表单字段。
我为此编写了一个非常简单的 jQuery 插件。它只是使用 'required' 属性向表单添加客户端验证。
https://github.com/garyv/jQuery-Validation-plugin
包含插件后,您可以在jQuery的文档准备函数中或在html正文的末尾调用validate()。
<script>
$(document).ready(function(){
$('form').validate();
});
</script>
【讨论】:
您可以使用h5validate,这正是您所需要的。
<script>
$(document).ready(function () {
$('form').h5Validate();
});
</script>
【讨论】:
找到了一个非常通用且轻量级(曾经被缩小)的引擎,可以跨浏览器工作,包括 ie8!
【讨论】: