Подтвердите форму, используя Jquery с двумя кнопками отправки - PullRequest
0 голосов
/ 26 апреля 2011

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

Моя проблема заключается в том, что если я нажимаю на А, то при вызове Б он не вызывает обработчик отправки на 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 Validate.

1 Ответ

0 голосов
/ 26 апреля 2011

Как насчет использования встроенного дескриптора события 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 в обоих случаях.

...