在jquery.validate SubmitHandler中使用bootbox.confirm

时间:2019-01-07 04:12:02

标签: jquery jquery-validate bootbox

当我在jquery.validate中使用bootbox时遇到问题,如果将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 :(得分:0)

在第二个示例中,通过按钮提交表单。但是,在您的第一个示例中,仅在确认对话框后以编程方式提交表单,因此不再涉及您的提交按钮,这就是为什么它永远不会显示在服务器上的原因。

点击retrieve and copy this value即可隐藏一个字段,并且该窗体有效。

driver.execute_script("window.CheckStatus = () => true;")

HTML标记:

// without resetting the scenes
controller = controller.destroy();

// with scene reset
controller = controller.destroy(true);

到那时,你应该得到这个:

$(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();
                }
            })
        }
    });
});

尽管如此,目前尚不清楚为什么首先需要其中的任何一个。如果正在通过<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 ) 按钮?如果是这样,将“提交”按钮的值复制到隐藏字段中似乎毫无意义。