Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当OnClientClick返回False时,防止LinkButton触发OnClick_Javascript_Jquery_Asp.net_Twitter Bootstrap_Linkbutton - Fatal编程技术网

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首先会遇到这个问题,以及如何纠正这个问题。