我正在使用一个函数来显示一个对话框,询问用户是否打印好支票,如果是,我们更新数据库中的标志以进行检查。我将此函数传递给“checked_id”,这是一个包含要更新的检查ID的值。
此代码在第一次运行时工作正常,但是当我单击另一个检查以打印时,“checked_id”与先前执行的id相同。此外,id永远不会被更改,除非我刷新浏览器,我不想每次都这样做。
我已经通过firebug验证了在调用函数时“checked_id”实际上正在被更改,但是jquery(即猜测)中的内容或者此函数没有清除变量中的主要值。
我该如何解决这个问题?提前感谢您的帮助。
这是我的js函数
function confirm_print_checks_yes_no(xtitle,msg, btn_yes_txt, btn_no_txt, checked_id, xwidth, xheight)
{
var button_yes = btn_yes_txt;
var button_no = btn_no_txt;
var dialog_buttons = {};
xwidth = (xwidth) ? xwidth : 300;
xheight = (xheight) ? xheight : 150;
dialog_buttons[button_yes] = function (){ update_existing(checked_id,"xml/xml_update_db.php", "print_checks_div", "SQL_UPDATE_multiple_checks", "update_existing", "", "sql_acctg_checks.php"); $(this).dialog("close");
$(this).dialog("close");
};
dialog_buttons[button_no] = function(){$(this).dialog("close");};
$("#modal_confirm_yes_no").html(msg);
$("#modal_confirm_yes_no").dialog({
title: xtitle,
bgiframe: true,
autoOpen: false,
height: xheight,
width: xwidth,
modal: true,
buttons: dialog_buttons
});
$("#modal_confirm_yes_no").dialog("open");
}
用法:
onclick="
var checked_ids = getAllCheckedIDs('my_div', 'check_print_chbx');
if(checked_ids)
{
window.open('print_checks_pdf.php?print_ids=' + checked_ids );
confirm_print_checks_yes_no(''.mysql_real_escape_string(L_PRINT_CHECKS).', ''.mysql_real_escape_string(L_PRINT_CHECKS_OK_MSG).'', ''.mysql_real_escape_string(L_PRINT_CHECKS_OK_YES_MSG).'', ''.L_NO.'', checked_ids, 500, 200 );
}
else
{
alert('No Checks Selected')
};"
答案 0 :(得分:0)
如果您使用checked_id变量(带有sam名称),也可能会导致问题。
你可以,例如使您的函数返回“checked_id”的新值,并将其分配给函数的变量外部。
答案 1 :(得分:0)
对于任何人来说,我都知道“$(this).dialog('destroy');”而不是“$(this).dialog('close');工作。