Используйте bootbox.confirm в jquery.validate submitHandler - PullRequest
0 голосов
/ 07 января 2019

У меня проблема при использовании bootbox в jquery.validate, если я помещаю bootbox.confirm в submitHandler, значение кнопки отправки будет потеряно в бэкэнде

JS код:

$(function () {
        $("#userForm").validate({
            submitHandler: function (form) {
                bootbox.confirm('are you sure?', function (result) {
                    if (result) {
                        form.submit();
                    }
                })
            }
        });
    })

данные, полученные в бэкэнде:

Array
(
    [username] => james
)

если я удалю bootbox.confirm, например:

$(function () {
        $("#userForm").validate({
            submitHandler: function (form) {
                    form.submit();
            }
        });
    })

показывает:

Array
(
    [username] => james
    [submitButton] => Submit
)

Кто-нибудь знает, почему и как решить эту проблему? Большое спасибо.

1 Ответ

0 голосов
/ 07 января 2019

Во втором примере форма отправляется с помощью кнопки. Однако в первом примере форма отправляется программно только после подтверждения диалогового окна, поэтому кнопка отправки больше не используется, поэтому она никогда не отображается на сервере.

Вы можете получить и скопировать это значение в скрытое поле, когда оно щелкнуло, а форма действительна.

$(function () {
    $("#userForm").validate({
        submitHandler: function (form) {

            // copy value of button into hidden field
            $('#submitButtonValue').val($('#submitButton').val());

            bootbox.confirm('are you sure?', function (result) {
                if (result) {
                    form.submit();
                }
            })
        }
    });
});

HTML разметка:

<form id="userForm'>
    <input type="hidden" name="submitButtonValue" id="submitButtonValue" value="" />

    ....

    <input type="submit" name="submitButton" id="submitButton" value="Submit" />
</form>

В этот момент вы должны получить это:

Array
(
    [username] => james
    [submitButtonValue] => Submit
)

Хотя очень непонятно, зачем вам вообще это нужно. Если он проходит через submitHandler, не можем ли мы автоматически предположить, что была нажата кнопка submit? В таком случае кажется бессмысленным копировать значение кнопки отправки в скрытое поле.

...