无法在确认框中获取更新的全局变量值

时间:2014-06-13 16:32:03

标签: javascript jquery dialog modal-dialog confirmation

 <script type="text/javascript">
   var customDiv  ="hello";
   $(function () {
    var $form = $("#authNotificationForm");

    var startItems = $form.serializeArray();     
    startItems = convertSerializedArrayToHash(startItems);

    $("#authNotificationSubmit").click(function (e) {  
        var currentItems = $form.serializeArray();
        currentItems = convertSerializedArrayToHash(currentItems);

        var itemsToSubmit = hashDiff(startItems, currentItems);

        for (var item in itemsToSubmit) {
            customDiv = "test";
        }
    });

  $(".confirm").confirm({
        text: "Are you sure you want update the following changes?" + customDiv,
        confirm: function (button) {
            // do something
        },
        cancel: function (button) {
            // do something
        },
        confirmButton: "Yes I am",
        cancelButton: "No",
        post: true
    });
</script>

我要做的就是在表单加载时获取表单的serializeArray。然后在提交单击后再次更改字段后,获取一个新的serializedArray表单比较2并获取更改的字段,然后在确认框中显示用户更改的字段。但是确认框显示的是hello而不是test。 我的假设是,确认框文本已经加载到文档就绪,并且永远不会更新,因此它始终具有在文档就绪时设置的全局变量值。 (我正确地获取更新的值,因此序列化和hashDiff函数很好,不是问题只是将此值传递给确认框。) 谢谢你的关注..

1 个答案:

答案 0 :(得分:1)

您正在加载时设置text:选项。稍后更改customDiv不会影响它,因为先前已完成连接。

使用$.confirm代替将确认对话框直接绑定到按钮,这样您就可以在通话时传递参数:

$(".confirm").click(function() {
    $.confirm({
        text: "Are you sure you want update the following changes?" + customDiv,
        confirm: function (button) {
            // do something
        },
        cancel: function (button) {
            // do something
        },
        confirmButton: "Yes I am",
        cancelButton: "No",
        post: true
    });
});