我正在寻找最有效的表格验证方法,我想知道我目前的植入是否不仅可行,而且在动态扩展时是可持续的。看看:
(警告:忽略愚蠢的HTML类名称)
// --------- Validate Required Fields ----------
$('.valid8-form').submit(function() {
// Array to Store Errors
$('.valid8-errors').html('');
var formValidationErrors = [];
if ($('.valid8-requried').val() === '' || $('.valid8-requried').val() === null) {
formValidationErrors.push('The ' + $('.valid8-requried').name + ' field is required!');
}
// Place Errors In List on DOM
for (var i = 0; i < formValidationErrors.length; i++) {
$('<li>', {
text: formValidationErrors[i]
}).appendTo($('.valid8-errors'));
}
});
有没有办法在输入中添加错误字符串中的forEach空白字段?现在,它只会在数组中为它命中的第一个空白字段抛出一个字符串。
答案 0 :(得分:1)
您希望未来可扩展性考虑的一件事是易于维护验证规则集和表单设计。这是一个很好的主题,因为没有标准的方法可以做到这一点,但是有很多想法和追求最好的&#34;是一个很好的。
我已经完成了一些工作,我使用JSON来定义我的表单,然后编写一个函数来为我呈现表单。这将有关表单的信息(包括验证规则)整合到易于读取和维护的对象定义中,如果需要,可以从数据源加载。
您可以在我的问题中查看我在寻求标准时所引用的示例:Is there an accepted or emerging JSON form and field definition format?
请参阅那里给出的表单定义上的validation属性。
因此,一个很好的问题是:我们是在寻找脚本性能效率还是在寻找总体所有权效率,哪些更容易变化?如果您使用像jquery这样的框架来处理对DOM的询问,我认为前者不太重要。在大多数情况下,在这个问题上一直有效率。这就留下了一个问题:当它的增长远远超出我们的预期时,最简单的方法是什么?我认为JSON方法值得一试。
至于脚本效率,我可以从基准测试中告诉你,你的for(var i = 0 ...比objs中的var obj快得多),所以在这方面,你已经达到了脚本效率。
提高效率的一件事就是缓存DOM引用。
var verrors = $('.valid8-errors');
$('.valid8-form').submit(function() {
// Array to Store Errors
verrors.html('');
var vrequired = $('.valid8-required');
var formValidationErrors = [];
if (vrequired.val() === '' || vrequired.val() === null) {
formValidationErrors.push('The ' + vrequired.name + ' field is required!');
}
// Place Errors In List on DOM
for (var i = 0; i < formValidationErrors.length; i++) {
$('<li>', {
text: formValidationErrors[i]
}).appendTo(verrors);
}
});
这可以防止DOM的多个查询找到相同的对象,并且应该提供较小的性能提升,尤其是旧浏览器。