jquery добавляет пользовательский валидатор

#jquery #validation

#jquery #проверка

Вопрос:

у меня есть следующее:

   $('#qForm').validate({
    rules: {

                answerYesNo_1: { required:true } ,

                answerYesNoText_1: { required: function(element) {
                                        return $('#answerYesNo_1').val() == 'yes';
                                       }
                , isMoney: true  }, 
                answerYesNo_2: { required:true } ,

                answerYesNoText_2: { required: function(element) {
                                        return $('#answerYesNo_2').val() == 'yes';
                                       }
                , isMoney: true  }, 
                answerYesNo_3: { required:true } ,

                answerYesNoText_3: { required: function(element) {
                                        return $('#answerYesNo_3').val() == 'yes';
                                       }
                , isMoney: true  }, 
                answerYesNo_4: { required:true } ,

                answerYesNoText_4: { required: function(element) {
                                        return $('#answerYesNo_4').val() == 'yes';
                                       }
                , isMoney: true  }, 
                answerYesNo_5: { required:true } ,

                answerYesNoText_5: { required: function(element) {
                                        return $('#answerYesNo_5').val() == 'yes';
                                       }
                , isMoney: true  }      
    },  
...


    jQuery.validator.addMethod("isMoney", function(value, element) {
    alert(/^$?[0-9][0-9,]*(.d{1,2})?$|^$?[.]([d][d]?)$/.test(value));                                          
    return /^$?[0-9][0-9,]*(.d{1,2})?$|^$?[.]([d][d]?)$/.test(value);

});
  

Проблема, с которой я сталкиваюсь, заключается в том, что она игнорирует первую часть требуемой функции :

     return $('#answerYesNo_1').val() == 'yes' 
  

Скажем: я выбираю «нет» для answerYesNo_2, answerYesNo_3, answerYesNo_4, answerYesNo_5, я получу false для каждого из них. Если ответ отрицательный, он не должен переходить к проверке isMoney. Любая помощь?

Ответ №1:

попробуйте это:

 $.validator.addMethod("isMoney", function (value, element) {
    alert(/^$?[0-9][0-9,]*(.d{1,2})?$|^$?[.]([d][d]?)$/.test(value));
    return /^$?[0-9][0-9,]*(.d{1,2})?$|^$?[.]([d][d]?)$/.test(value);
});
$.validator.addMethod(
    'equalToParam',
    function ( value, element, param ) {
        return $.trim(value) == param;
    },
    'Do not match.'
);
$('#qForm').validate({
    rules: {
        answerYesNo_1: {
            required: true,
            equalToParam: 'yes'
        },
        answerYesNoText_1: {
            required: true,
            isMoney: true
        },
        answerYesNo_2: {
            required: true
        },
        answerYesNoText_2: {
            required: true,
            equalToParam: 'yes'
            isMoney: true
        },
        answerYesNo_3: {
            required: true
        },
        answerYesNoText_3: {
            required: true,
            equalToParam: 'yes'
            isMoney: true
        },
        answerYesNo_4: {
            required: true
        },
        answerYesNoText_4: {
            required: true,
            equalToParam: 'yes'
            isMoney: true
        },
        answerYesNo_5: {
            required: true
        },
        answerYesNoText_5: {
            required: true,
            equalToParam: 'yes'
            isMoney: true
        }
    },
  

В следующий раз или, если мой фрагмент кода не работает, сделайте демонстрацию http://jsfiddle.net / пожалуйста

Комментарии:

1. Это не работает. jsFiddle был добавлен сразу после исходного сообщения в разделе комментариев. Спасибо