jquery проверить подключи и игнорируй (JavaScript и jquery новичок) - PullRequest
0 голосов
/ 17 сентября 2011

Позвольте мне признать, что я не очень хорошо разбираюсь в jQuery или даже в простонародье JS, но я прошел через довольно классную форму, но мне нужен кто-то, чтобы помочь мне с последней проблемой, с которой я столкнулся.

$(document).ready(function(){

var ignoreClasses="";

//this hides or shows the specific sections base ond the relationship select
$("#relationship").change(function() {
    switch ($(this).val()){

        case 'prospective-customer':
            $(".interest_all").hide();
            $("#interest_1").show();
            ignoreClasses = '.s2,.s4,.s5';
        break;
        case 'current-cutomer':
            $(".interest_all").hide();
            $("#interest_2").show();
            ignoreClasses = '.s1,.s4,.s5';
        break;
        case 'prospective-partner': 
            $(".interest_all").hide();              
            $("#interest_3").show();
        break;
        case 'applicant':
            $(".interest_all").hide();          
            $("#interest_4").show();
            ignoreClasses = '.s1,.s2,.s5';
        break;  
        case 'vendor':          
            $(".interest_all").hide();          
            $("#interest_5").show();
            ignoreClasses = '.s1,.s2,.s4';
        break;  

        default:
            $(".interest_all").hide();
        }   
});

// field validation
$("#leadform").validate({

     //I need to get the ignore class in here
    //like ignore: '.s2,.s4,.s5'


});

});

есть ли способ получить переменную ignoreClasses в .validate ()


Jonathan

Большое спасибо, что работает для того, чтобы получить значения в игнорировании. Но есть проблема. Полная проверка формы работает только в том случае, если пользователь изменяет поле выбора #Relationship. Если пользователь просто вводит свое имя, то щелчки при отправке формы вообще не проверяются.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2011

Если вы хотите, чтобы .validation() работал с ignoreClasses, который вы указали в прослушивателе событий change, вы должны вызвать метод .validation() из прослушивателя событий.Таким образом, ignoreClasses не будет определено при запуске .validate().

$(document).ready(function() {

    var ignoreClasses = "";

    var $interests_all = $(".interest_all");

    //this hides or shows the specific sections base ond the relationship select
    $("#relationship").change(function() {
        switch (this.value) {

        case 'prospective-customer':
            $interests_all.hide();
            $("#interest_1").show();
            ignoreClasses = '.s2,.s4,.s5';
            break;
        case 'current-cutomer':
            $interests_all.hide();
            $("#interest_2").show();
            ignoreClasses = '.s1,.s4,.s5';
            break;
        case 'prospective-partner':
            $interests_all.hide();
            $("#interest_3").show();
            break;
        case 'applicant':
            $interests_all.hide();
            $("#interest_4").show();
            ignoreClasses = '.s1,.s2,.s5';
            break;
        case 'vendor':
            $interests_all.hide();
            $("#interest_5").show();
            ignoreClasses = '.s1,.s2,.s4';
            break;

        default:
            $interests_all.hide();
        }
        // field validation (now being called from within the change listener)
        $("#leadform").validate({
            ignore: ignoreClasses
        });
    });
});
0 голосов
/ 17 сентября 2011

$("#leadform").validate({ ignore: ignoreClasses});

Вы передаете объект в метод проверки , поэтому вы должны использовать синтаксис JSON.

Кроме того, я предлагаю вам кэшировать ваши селекторы jQuery для лучшей производительности (не то, чтобы это имело большое значение в этом случае, но это хорошая практика).

http://jsfiddle.net/jondum/Tua6c/

...