Проверка формы с помощью Jquery с двумя кнопками отправки

#jquery #jquery-plugins #jquery-validate

#jquery #jquery-плагины #jquery-проверка

Вопрос:

У меня есть одна форма, и на ней есть 2 кнопки отправки с 3 текстовыми полями. При нажатии кнопки текстовое поле 1 должно быть проверено, а две другие кнопки отправки B должны быть проверены. Я использовал обработчик отправки и отправил форму с помощью ajax.

Моя проблема в том, что если я нажимаю на A, то он не вызывает обработчик отправки B, если B нажат. Независимо от того, что нажато первым, другой метод не работает.

Пожалуйста, помогите!

Мой код выглядит следующим образом :

 function set_new_rate(oid) {
    alert("set_new_rate");
    $("#TestForm").validate({
        event: "custom",
        rules: {
            client_new_rate: {
                required: true,
                number: true
            },
            agent_new_rate: {
                required: true,
                number: true
            }
        },
        messages: {
            client_new_rate: {
                required: "Required",
                number: "Invalid Rate"
            },
            agent_new_rate: {
                required: "Required",
                number: "Invalid Rate"
            }
        },
        submitHandler: function() {
            var client_new_rate = $('#client_new_rate').val();
            var agent_new_rate = $('#agent_new_rate').val();

            var answer = confirm("Set New Rate for this Order?")
            if (answer)
            {
                $.post('http://localhost/fc/index.php/disp/set_new_rate/',{order_id:oid,client_new_rate:client_new_rate,agent_new_rate:agent_new_rate},function(data){
                    if(data==1)
                    {
                        $('#rateupdated').html('<div id="display_message" class="msg msg-ok" style="margin:0 0 5px 0px;width:180px;"><p>Rate Updated Successfully!</p></div>');
                        $("#rateupdated").fadeIn(0).fadeOut(5000);
                        $('#rec_ord_cnt_prc' oid).html(client_new_rate);
                        $('#client_old_rate').html(client_new_rate);
                        $('#agent_old_rate').html(agent_new_rate);
                        $('#client_new_rate').val('');
                        $('#agent_new_rate').val('');
                    }
                });
            }
        }
    });
}

function add_note(oid) 
{
    alert("add_note");

    $("#TestForm").validate({
        event: "custom",
        rules: {
            note_description: {
                required: true
            }
        },
        messages: {
            note_description: {
                required: "Required"
            }
        },
        submitHandler: function() {
            alert("add_note _ sh");
            var note_description = $('#note_description').val();
            var note_type = $('input:radio[name=note_type]:checked').val();
            var answer = confirm("Add this " note_type " Note?")
            if (answer)
            {
                $.post('http://localhost/fc/index.php/disp/add_note/',{order_id:oid,note_description:note_description,note_type:note_type},function(data){
                    if(data==1)
                    {
                        $('#noteadded').html('<div id="display_message" class="msg msg-ok" style="margin:5px 5px 5px 0px;width:282px;"><p>Note Added Successfully!</p></div>');
                        $('#note_description').val('');
                        $("#noteadded").fadeIn(0).fadeOut(5000);
                    }                            
                });
            }
        }
    });
}
  

Я использую плагин проверки Jquery.

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

1. Я не знаю, почему вы хотите проверить этот способ, я думаю, что проще, если у вас есть отдельные формы, поскольку они выполняют разные действия.

Ответ №1:

Как насчет использования встроенного в jquery дескриптора события вместо вызова submitHandler.

 $('.MyForm .set_rate').click(function(e){
   set_new_rate(oid);
   //here your submitHandler call function
});

$('.MyForm .add_note').click(function(e){
   add_note(oid);
   //here your submitHandler call function
});
  

(Я попытался скопировать функцию, но текстовое поле выдало мне ошибку. В ваших функциях просто удалите submitHandler в обоих случаях.