поймать событие click и использовать validate.js - PullRequest
1 голос
/ 21 ноября 2011

давайте предположим, что у меня есть 2 кнопки в форме, скажем, кнопки btnA и btnB. Я хочу проверить свою форму, используя validate.js Я стараюсь:

var v = $("#form1").validate({
    ignore: ':hidden',
    rules: {
        if(--btnA is clicked--){
            txtMenuName: { required: true }
        }
        if(--btnB--){

            txtLinkTitle: { required: true },
            txtExternalLink: { required: true }
        }
    },
    messages: {
        txtMenuName: "*",
        review: "*",
        txtLinkTitle: "*",
        txtExternalLink: "*"

    }
});

Но я не могу понять, какая кнопка нажата. Пожалуйста, помогите решить мою проблему.

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Я пытался отправить это как правку ответа Бэзза, но у меня нет разрешения, поэтому вот пример кода, который должен помочь.

$(function(){
    $('#btnA').click(function(){
        $(this).addClass('clicked');
        $('#btnB').removeClass('clicked');
    });
    $('#btnB').click(function(){
        $(this).addClass('clicked');
        $('#btnA').removeClass('clicked');
    });
});

var v = $("#form1").validate({
    ignore: ':hidden',
    rules: {
        if($('#btnA').hasClass('clicked'){
            txtMenuName: { required: true }
        }
        if($('#btnB').hasClass('clicked'){

            txtLinkTitle: { required: true },
            txtExternalLink: { required: true }
        }
    },
    messages: {
        txtMenuName: "*",
        review: "*",
        txtLinkTitle: "*",
        txtExternalLink: "*"

    }
});
0 голосов
/ 21 ноября 2011

Я предполагаю, что кнопки в первую очередь инициировали проверку, поэтому вы должны иметь возможность получить нажатую кнопку через переменную 'this'.В противном случае добавьте обработчик события click к кнопкам, которые переключают класс «clicked» к текущей кнопке, проверьте наличие этого класса в вашем коде проверки и вы знаете, какая кнопка была нажата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...