我有一个多选Gridview,如果用户例如在网格中选择了3行:name 1,name2,name3。我应该向用户显示弹出确认消息,你确定吗?
jquery中的问题,它不等待确认消息,它调用所有函数。 我想要的是首先知道消息的结果然后调用函数
编辑:
function dosomething()
{
var $current = $("#confirm");
var gridId = $("#Grid_Id");
var confirmedArr = new Array;
confirmedArr = gridId.jqGrid('getGridParam','selarrrow');
var n=0;
var i = 0;
var arrayLength = confirmedArr.length;
var user_id;
alert(arrayLength);
if($current.is(":checked"))
{
for (var i = 0; i < arrayLength; i++)
{
var confirmMsg = "set off USER "+ confirmedArr[i];
_showConfirmMsg(confirmMsg, "Are you sure ?", function(confirmChoice, theArgs)
{
user_id = confirmedArr[i];
console.log(user_id);
usrar=user_id;
if (i>0)
{
usrar= user_id +usrar;
}
if (arrayLength==i)
{
confirmedme(usrar);
}
});
}
}
else
{
confirmedUserArr = gridId.jqGrid('getGridParam','selarrrow');
confirmedme(confirmedArr);
}
}
function confirmedme(confirmedArr)
{
alert("confirm me");
}
答案 0 :(得分:1)
你可以做的是尝试在回调中调用你的函数,具体取决于选择,当然是这样的。
_showConfirmMsg(confirmMsg, "Are you sure ?", function(confirmChoice, theArgs) {
user_id = confirmedArr[i];
i++;
// Call your function here.
if (confirmChoice == something) {
yourFunction();
}
}
更新:
尝试将此块移出for循环。
if (arrayLength==i)
{
confirmedme(usrar);
}
这样的事情:
var count = 0;
for (var i = 0; i < arrayLength; i++) {
var confirmMsg = "set off USER "+ confirmedArr[i];
_showConfirmMsg(confirmMsg, "Are you sure ?", function(confirmChoice, theArgs) {
// Blah blah
count ++;
});
}
if (arrayLength==count)
{
confirmedme(usrar); // Not sure how you use the usrar but make sure you declare this variable before the loop.
}
答案 1 :(得分:0)
尝试改变:
_showConfirmMsg(confirmMsg, ""Are you sure ?", function(confirmChoice, theArgs)
为:
_showConfirmMsg(confirmMsg, "Are you sure ?", function(confirmChoice, theArgs)