我有一个说120个日期框的页面。我正在使用validate插件来验证页面提交时的那些框。我写了一些自定义日期验证码。
我使用jQuery.validator.addMethod()创建规则,然后使用validator.addClassRules()将这些验证添加到我的日历中。
它在firefox中运行正常(有时)但是在我点击进入IE时它会弹出一个弹出窗口说“此页面上的脚本导致Internet Explorer慢下来......”
有人可以帮忙。
添加代码.....
/******* This is the input thats there *********/
<input type="text" toDate="${dateRangeModel.toDate}" fromDate="${dateRangeModel.fromDate}" prefill="mm/dd/yyyy" class="calendarInput" />
/* Checking if its a valid date */
jQuery.validator.addMethod("isDateValid",function(value, element) {
var re = /(0[1-9]|1[012]|[1-9])+\/(0[1-9]|[12][0-9]|3[01]|[1-9])+\/(19|20)\d\d/;
if($(element).is(':hidden') || value.match(re) || value === $(element).attr('prefill')){
return true;
}
else {
return false;
}
}, 'Enter a valid date');
/******** Adding class rule ***********/
$.validator.addClassRules({
calendarInput: {
dateRange:true,
isDateValid: true
}
});
答案 0 :(得分:0)
IE特定性能问题的最佳工具是dynaTrace AJAX Edition。他们有quick start tutorials on the site,只需点亮你的页面,看看花了最多的时间来执行。
是的,它是免费的:)
答案 1 :(得分:0)
您可以做的一件事是在验证调用之外编译正则表达式,比如
var re = new RegExp("(0[1-9]|1[012]|[1-9])+\/(0[1-9]|[12][0-9]|3[01]|[1-9])+\/(19|20)\d\d");
然后在所有验证调用中重用相同的对象,而不是不断地重建它。也就是说,在同一页面上有120个几乎任何东西都是UI灾难。
你可以缩短剩下的部分(主要是为了使它更简洁):
jQuery.validator.addMethod("isDateValid",function(value, element) {
return ($(element).is(':hidden') || value === $(element).attr('prefill') || value.match(re));
}, 'Enter a valid date');
我重新安排了测试,希望将正则表达式测试放在最后会使事情变得更快。