Javascript 当OnClientClick返回False时,防止LinkButton触发OnClick
我在我的Javascript 当OnClientClick返回False时,防止LinkButton触发OnClick,javascript,jquery,asp.net,twitter-bootstrap,linkbutton,Javascript,Jquery,Asp.net,Twitter Bootstrap,Linkbutton,我在我的aspx页面中有linkbutton <asp:LinkButton ID="LinkButton1" OnClientClick="if ( !MutExChkList()) return false;" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton> 我从以下链接获得了帮助 还有更多的搜索 如果我使用OnClientClick=“MutExChkList(ev
aspx
页面中有linkbutton
<asp:LinkButton ID="LinkButton1" OnClientClick="if ( !MutExChkList()) return false;" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
我从以下链接获得了帮助
还有更多的搜索
如果我使用OnClientClick=“MutExChkList(event);”
则在这两种情况下它都会回发true
或false
如果我使用OnClientClick=“if(!MutExChkList())返回false;”
则当函数返回true
有谁能帮我摆脱这个。。。
先谢谢你。。。
我使用的是asp.net,如注释中所述,您不能从回调内部返回,而期望外部函数知道它。该函数在调用
swal()
后立即退出,并始终返回undefined
一个选项是在设置sentinel/flag后阻止初始单击并从代码触发单击操作
比如:
var allow = false;
function MutExChkList() {
if (!allow) {
swal({
title: 'Are you sure?',
text: 'You will not be able to recover this imaginary file!',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: 'Yes, delete it!',
cancelButtonText: 'No, cancel plx!',
closeOnConfirm: false,
closeOnCancel: false
}, function(isConfirm) {
if (isConfirm) {
allow = true; // Allow next click to succeed
$('#LinkButton1')[0].click(); // Hit the browser event direct
}
});
}
return allow;
};
<asp:LinkButton ClientIDMode="static" ID="LinkButton1" OnClientClick="return MutExChkList();" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
然后,该按钮会变成类似于:
var allow = false;
function MutExChkList() {
if (!allow) {
swal({
title: 'Are you sure?',
text: 'You will not be able to recover this imaginary file!',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: 'Yes, delete it!',
cancelButtonText: 'No, cancel plx!',
closeOnConfirm: false,
closeOnCancel: false
}, function(isConfirm) {
if (isConfirm) {
allow = true; // Allow next click to succeed
$('#LinkButton1')[0].click(); // Hit the browser event direct
}
});
}
return allow;
};
<asp:LinkButton ClientIDMode="static" ID="LinkButton1" OnClientClick="return MutExChkList();" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
以及jQuery:
var allow = false;
$('#LinkButton1').click() {
if (!allow) {
swal({
title: 'Are you sure?',
text: 'You will not be able to recover this imaginary file!',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: 'Yes, delete it!',
cancelButtonText: 'No, cancel plx!',
closeOnConfirm: false,
closeOnCancel: false
}, function(isConfirm) {
if (isConfirm) {
allow = true; // Allow next click to succeed
$('#LinkButton1')[0].click(); // Hit the browser event direct
}
});
}
return allow;
});
我有一个解决办法。
是的,您不能从回调内部返回,而期望外部函数知道它。该函数在调用swal()后立即退出,并始终返回未定义的或内部的某些返回
在我的示例中,我总是返回false,在我的函数中,我发送我单击的button对象以再次单击它。
然后我有一个名为Myflag的变量,我的变量告诉我如果我点击了sweetalert,如果Myflag为false,我会再次显示sweetalert,如果Myflag为true,我会返回true,OnClick会立即执行服务器方法
比如:
var allow = false;
function MutExChkList() {
if (!allow) {
swal({
title: 'Are you sure?',
text: 'You will not be able to recover this imaginary file!',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: 'Yes, delete it!',
cancelButtonText: 'No, cancel plx!',
closeOnConfirm: false,
closeOnCancel: false
}, function(isConfirm) {
if (isConfirm) {
allow = true; // Allow next click to succeed
$('#LinkButton1')[0].click(); // Hit the browser event direct
}
});
}
return allow;
};
<asp:LinkButton ClientIDMode="static" ID="LinkButton1" OnClientClick="return MutExChkList();" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
var Myflag=false;
函数EliminarRegistroJavaS(e){
如果(Myflag==false){
喷火({
标题:'Eliminar registro',
文字:“Desea quitar el Registro?”,
图标:“警告”,
showCancelButton:true,
confirmButtonColor:“#3085d6”,
cancelButtonColor:“#d33”,
confirmButtonText:“是的,基塔!”,
closeOnConfirm:true
})。然后((结果)=>{
if(result.value){
喷火(
“伊莱米纳多!”,
“Eliminado登记处”,
“成功”
);
Myflag=true;
e、 单击()
};
});
返回false;
}否则{
Myflag=false;
返回true;
}
}
您不能等待来自swal
的响应并从回调中返回值。返回给回调的调用方(在swal()
中,而不是click事件处理程序中)。请注意,实际上您的函数MutExChkList
本身不会返回任何内容。回调函数确实返回,但这是一个不同的返回值,不必对外部函数返回值做任何处理。第二点是,即使MutExChkList
已经返回,您也应该将其用作OnClientClick=“return MutExChkList(event);”
,而不仅仅是OnClientClick=“MutExChkList(event);“
谢谢您的时间,先生。。。!您的第一种方法工作得很好,但当我按Ctrl+f5刷新页面时,它将自动触发OnClick事件。。。那么现在如何防止这种情况呢?@Waqas:Page refresh丢弃所有JavaScript和变量,然后重新开始。它不可能记住设置了allow
标志。你只是假设这会发生吗?欢迎这么说,虽然我们感谢你花时间帮助顾客,但我们鼓励你在回答中添加一些细节,解释为什么OP首先会遇到这个问题,以及如何纠正这个问题。