jquery与jquery的兼容性验证旧版本

时间:2012-09-06 20:44:09

标签: jquery validation

我正在使用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('');
                                                    }

                                            });


                                    }
                            }


                        },

1 个答案:

答案 0 :(得分:0)

所有版本的jQuery都弃用了

.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");
});

工作演示:http://jsfiddle.net/jfriend00/FULfe/