我正在使用jquery validate v1.7和jQuery v1.4.2,我必须在blur和onkeyup事件上使用.live。这些事件似乎不适用于这些版本。有关如何使用这些约束处理onkeyup和模糊事件的任何解决方案都会有所帮助。
注意:我将无法将这些版本更新为可用的最新版本,因为多个团队正在使用这些文件的旧版本,并且他们不想升级到最新版本。
Jquery验证通话:
onkeyup: function(element){
C.options.throwMessages(element);
},
throwMessages: function(el){
if($(el).attr('name') === "email"){ //Validating email field
var selectedField = $(el);
var emailValid = C.options.simple_validate_email(selectedField);
if (C.options.pageName === 'login' || C.options.pageName === 'register'){
$(C.options.currentPage).find(':submit').click(function(){
var selectedField = $(C.options.currentPage).find('input.email');
if(!selectedField.val().length){
selectedField.removeClass('errorIndicator');
}
});
}
if(C.options.pageName === "register"){
selectedField.live('blur', function(){
if($(this).val().length === 0){
$(this).parent().parent().removeClass('aimValid');
}
});
selectedField.live('keydown focusout', function(event) {
if(event.type == 'keydown'){
if(!C.options.simple_validate_email($(this))){
$(this).parent().parent().removeClass('aimValid');
$(C.options.currentPage).find('.emailTip').show().html('Please enter a valid email address.');
}else{
$(this).removeClass('errorIndicator');
$(C.options.currentPage).find('.emailTip').hide().html('');
}
}else if(event.type == 'focusout'){
if(!C.options.simple_validate_email($(this))){
}else{
$(this).removeClass('errorIndicator');
$(C.options.currentPage).find('.emailTip').hide().html('');
}
}
});
}
}else if($(el).attr('name') === "password"){//Validating password field
var selectedPasswordField = $(el);
if(C.options.pageName === "register"){
//password field
selectedPasswordField.live('keydown', function(){
if($(this).val().length === 0){
$(this).parent().parent().removeClass('aimValid');
$(this).removeClass('aimError');
}
});
}
}else if($(el).attr('name') === "username2"){//Validating email field on ForgotPassword screen
var selectedField = $(el);
if (C.options.pageName === 'forgotPassword') {
var isFormValid = false;
$(C.options.currentPage).find(':submit').click(function(){
if((selectedField.val().length === 0) || !selectedField.parent().parent().find('div.aimError').length){
isFormValid = true;
}
selectedField.live('keydown focusout', function(event){
if(event.type === 'keydown'){
$(C.options.currentPage).find('.emailTip').hide().html('');
}else{
$(C.options.currentPage).find('.emailTip').hide().html('');
}
});
if (isFormValid) {
$(C.options.currentPage).find('.emailTip').show().html('Please enter a valid email address.');
}else{
$(C.options.currentPage).find('.emailTip').hide().html('');
}
});
}
}
},
答案 0 :(得分:0)
.live()
。对于1.4,您可以像这样使用.delegate()
:
$("#container").delegate("#test", "keyup keydown focusout", function(e) {
log(e.type + " event");
});
工作演示:http://jsfiddle.net/jfriend00/WxqwS/
对于1.7,您可以使用.on()
,它与.delegate()
几乎相同,除了参数更符合逻辑顺序:
$("#container").on("keyup keydown focusout", "#test", function(e) {
log(e.type + " event");
});