Javascript 无法在确认框中获取更新的全局变量值 var customDiv=“你好”; $(函数(){ var$form=$(“#authenticationform”); var startItems=$form.serializeArray(); startItems=DarrayToHash(startItems); $(“#authenticationsubmit”)。单击(函数(e){ var currentItems=$form.serializeArray(); currentItems=convertSerializedArrayToHash(currentItems); var itemsToSubmit=hashDiff(起始项、当前项); for(itemsToSubmit中的var项){ customDiv=“测试”; } }); $(“.confirm”).confirm({ text:“确实要更新以下更改吗?”+customDiv, 确认:功能(按钮){ //做点什么 }, 取消:功能(按钮){ //做点什么 }, confirmButton:“是的,我是”, 取消按钮:“否”, 波斯特:是的 });
我所要做的就是在表单加载时获取表单的serializeArray。然后在提交时再次更改字段后,单击获取表单的新serializedArray比较2并获取更改的字段,然后在确认框上仅显示用户更改的字段。但确认框显示的是hello,而不是测试。 我的假设是,确认框文本已加载到document ready上,并且从未更新,因此它始终具有在document ready上设置的全局变量值。 (我正确地获取了更新的值,因此序列化和hashDiff函数可以正常工作,而不是问题。问题只是将此值获取到确认框。)Javascript 无法在确认框中获取更新的全局变量值 var customDiv=“你好”; $(函数(){ var$form=$(“#authenticationform”); var startItems=$form.serializeArray(); startItems=DarrayToHash(startItems); $(“#authenticationsubmit”)。单击(函数(e){ var currentItems=$form.serializeArray(); currentItems=convertSerializedArrayToHash(currentItems); var itemsToSubmit=hashDiff(起始项、当前项); for(itemsToSubmit中的var项){ customDiv=“测试”; } }); $(“.confirm”).confirm({ text:“确实要更新以下更改吗?”+customDiv, 确认:功能(按钮){ //做点什么 }, 取消:功能(按钮){ //做点什么 }, confirmButton:“是的,我是”, 取消按钮:“否”, 波斯特:是的 });,javascript,jquery,dialog,modal-dialog,confirmation,Javascript,Jquery,Dialog,Modal Dialog,Confirmation,我所要做的就是在表单加载时获取表单的serializeArray。然后在提交时再次更改字段后,单击获取表单的新serializedArray比较2并获取更改的字段,然后在确认框上仅显示用户更改的字段。但确认框显示的是hello,而不是测试。 我的假设是,确认框文本已加载到document ready上,并且从未更新,因此它始终具有在document ready上设置的全局变量值。 (我正确地获取了更新的值,因此序列化和hashDiff函数可以正常工作,而不是问题。问题只是将此值获取到确认框。)
感谢您的关注。您正在加载时设置
文本:
选项。稍后更改customDiv
不会影响它,因为连接是在较早时完成的
不要将确认对话框直接绑定到按钮,而是使用$。确认
,以便在调用时传递参数:
<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>
您能否验证
itemsToSubmit
确实不是空的?是的,它不是空的,我使用调试器看到它。for循环中的代码正在监视窗口中执行customDiv值更改。但是当确认框打开时,它仍然具有在加载时设置的全局变量值。哦,我明白了。您缺少)代码>脚本中的某个地方(可能就在$(“#authNotificationSubmit”)之后)。单击
。您可以立即创建确认
模式,它始终使用customDiv
的初始值。我不确定如何工作。确认
能否以某种方式更改文本?非常感谢您花时间和精力帮助我。您能否向我解释一下为什么直接绑定到按钮工作不正常??我现在真的很困惑。你调用$(“#.confirm”).confirm()
在加载时,并提供一个文本选项。此时会发生连接,因为它只是一个对象文本,而不是稍后单击按钮时调用的函数。通常,如果要编写稍后执行计算的内容,它必须在函数中。如果它只是普通参数,则它会得到execu当时泰德。哦,好的,我明白了。这样一个核心概念,我从来没有这样想过。再次感谢。
$(".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
});
});