我有一个具有这样的属性的控件
OnClientClick="checkfn( resultfn(boolval) )"
checkfn进入并显示模态确认。并将resultfn(boolval)中的结果返回为true或false。
如何使OnClientClick获取该值并将其返回。例如。如果resultfn(boolval)= true,那么我希望它回发到服务器,如果它是假的,我想取消。
更新:
这就是checkfn目前所做的事情。见下文。
function checkfn() {
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Continue: function () {
$(this).dialog("close");
return true;
},
Cancel: function () {
$(this).dialog("close");
return false;
}
}
});
}
这不起作用,因为checkfn在返回之前没有等待对话框确认框。所以我的想法是,我想把继续和取消函数中的东西返回到resultfn(boolval)一个onclientclick可以使用的bool。
答案 0 :(得分:2)
你不能让OnClientClick
中调用的JavaScript函数“返回”服务器的值,但你可以在表单中填充一个隐藏的输入,这样在你的服务器端点击处理程序中,你可以读取价值:
OnClientClick="document.getElementById('hidden').setAttribute('value', checkfn(resultfn(boolval)))"
答案 1 :(得分:1)
使用OnClientClick="return checkfn( resultfn(boolval) );"
。如果您有验证,这可能会破坏验证,因为它return
到了早期。在这种情况下,如果结果为false,则只需要return
:
OnClientClick="var result=checkfn(resultfn(boolval)); if (!result) return false;"
答案 2 :(得分:1)
假设这是在提交按钮/链接上,请将其更改为
OnClientClick="return checkfn( resultfn(boolval) );"
以这种方式试试
function checkfn(buttonUniqueID) {
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Continue: function () {
$(this).dialog("close");
__doPostBack(buttonUniqueID, '');
},
Cancel: function () {
$(this).dialog("close");
}
}
});
然后更改OnClientClick
OnClientClick='return checkfn(<%= this.UniqueID %>);'
答案 3 :(得分:1)
@ amit_g的答案非常接近。由于您使用的是jQueryUI对话框而不是window.confirm,因此checkfn()正在执行并返回。尝试这样的事情:
<asp:Button ID="buttonUniqueId" ... OnClientClick="checkfn(); return false;" />
上面的代码将触发checkfn()然后取消回发。这为您的jQueryUI对话框提供了打开时间并向用户显示选项的时间。接下来,如果用户决定继续使用,请使用@ amit_g的checkfn()使用.NET按钮进行回发:
function checkfn(buttonUniqueID) {
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Continue: function () {
$(this).dialog("close");
__doPostBack(buttonUniqueID, '');
},
Cancel: function () {
$(this).dialog("close");
}
}
});
答案 4 :(得分:1)
不要让jQuery为你制作按钮,而是手动添加按钮,并使用链接按钮作为继续按钮。