Следующий код работал на FF и IE8. Теперь (регулярные обновления Win) IE зависает, как только он пытается применить любую часть одного или обоих наборов правил для ev_starttime
и ev_endtime
. Загрузка процессора IE достигает 50%, но использование памяти не затрагивается. Нет сообщений об ошибках ни от одного браузера (используя Firebug для FF и IE Developer Tools для IE). Из-за изменения использования процессора, я думаю, что IE застревает в цикле, но это не цикл, который кто-либо еще может увидеть. Идеи?
$("form[name='event_form']").validate({
debug: true,
rules: {
title: {required:true, minlength:5},
description: {required:true, minlength:5},
event_type_id: "required",
ev_start: { dateCan: true, required: true},
ev_end:{ dateCan: true,
minDate: "input[name='ev_start']"
},
ev_starttime:{
required:
function(element){
return $("input[name='allday']:unchecked");
},
time: true,
maxTime: {
depends: function(element) {
return $("input[name='ev_endtime']:filled")
&& $("input[name='ev_start']").valid()
&& $("input[name='ev_end']").valid()
&& $("input[name='ev_start']").val()==$("input[name='ev_end']").val();
},
param: "input[name='ev_endtime']"
}
},
ev_endtime:{
required:
function(element){
return $("input[name='allday']:unchecked")
},
time: true,
minTime: {
depends: function(element) {
return $("input[name='ev_start']").valid()
&& $("input[name='ev_end']").valid()
&& $("input[name='ev_starttime']").valid()
&& $("input[name='ev_start']").val()==$("input[name='ev_end']").val();
},
param: "input[name='ev_starttime']"
}
}
}
});
Правила minTime и maxTime выглядят так:
jQuery.validator.addMethod("minTime", function(value, element, param) {
try {
var aftertime=value.split(':');//hours and minutes
if($(param).val()=='') throw($param.name + ' empty');
var beforetime=$(param).val().split(':');
var at=new Date(0,0,0,aftertime[0],aftertime[1]*1);
var bt=new Date(0,0,0,beforetime[0],beforetime[1]*1);
return this.optional(element) || at > bt;
} catch(err){
return false;
}
}, function(param){
return "Time must occur after " + $(param).val();
}
);
jQuery.validator.addMethod("maxTime", function(value, element, param) {
try {
var beforetime = value.split(':');//hours and minutes
if($(param).val()=='') throw($param.name + ' empty');
var aftertime =$(param).val().split(':');
var at=new Date(0,0,0,aftertime[0],aftertime[1]*1);
var bt=new Date(0,0,0,beforetime[0],beforetime[1]*1);
return this.optional(element) || at > bt;
} catch(err){
return false;
}
}, function(param){
return "Time must occur before " + $(param).val();
}
);