【问题标题】:Stop function through JavaScript通过 JavaScript 停止函数
【发布时间】:2022-02-03 05:41:03
【问题描述】:

我有这个js函数:

function neki() {
  if ( $("input[id*='txtIDCriteria']").val() == ''
    && $("input[id*='chkID']").is(':checked')
  ) {
    alert('Value is required.');
  }
}

还有这个asp代码:

<table border="0" cellpadding="1" cellspacing="0"
  style="width: 100%" class="DataTable" id="check_all"
>
  <tr>
    <td>
      <asp:CheckBox CssClass="formdata100" ID="chkID" runat="server"> 
      </asp:CheckBox>
    </td>
    <td>
      <asp:Label CssClass="formdata100" ID="lblID" runat="server">
        Maintenance ID
      </asp:Label>
    </td>
    <td>
      <asp:TextBox CssClass="formdata100" ID="txtIDCriteria"
        runat="server" MaxLength="6"
        onkeyup="return validate_int(event,this);"
      >
      </asp:TextBox>
    </td>
  </tr>
  <tr>
    <td colspan="5">
      <asp:Button Text="search" ID="search" OnClick="search_Click"
        runat="server" style="float:right" onClientClick="neki()"
      />
    </td>
  </tr>

我希望这个OnClick="search_Click"在这个函数neki()被执行时停止,即当它为真时。

如何通过 JavaScript 解决?

【问题讨论】:

  • Javascript 是单线程的。你不能只用信号通知一个函数停止。
  • 能不能用别的方法解决?
  • 是的,您可以让按钮代码运行,也可以不运行。如果 on client 事件返回 true,则服务器端按钮代码将运行。如果客户端单击 JS 例程返回 false,则服务器端按钮单击和后面的代码不会运行。请参阅下面的答案。

标签: javascript html asp.net


【解决方案1】:

是的,您可以这样做。这是如何工作的?

如果 onclient click 函数返回 true,则服务器端代码/事件运行。

如果 onclient click 函数返回 false,则服务器端代码/事件不会运行。所以你可以这样做:

   <asp:Button Text="search" ID="search" OnClick="search_Click"
    runat="server" style="float:right" onClientClick="return neki();"

现在你的 JS 代码可以是这样的:

function neki() {
    if ( $("input[id*='txtIDCriteria']").val() == ''
        && $("input*[id*='chkID']").is(':checked'))
    {
    alert('Value is required.');
    return true;
    }
    return false;
}

虽然这适用于上述情况,但如果您使用 jQuery.UI 对话框,则代码不会等待,但即使是 jQuery.UI 对话框也有一个简单的解决方法,响应说是/否答案,而您仍然可以有条件地运行服务器端按钮代码。

edit: opps - 我倒过来了。

代码应该是这样的:

function neki() {
    if ( $("input[id*='txtIDCriteria']").val() == ''
        && $("input*[id*='chkID']").is(':checked'))
    {
    alert('Value is required.');
    return false;  <--- return false to NOT run button click
    }
    return true;   <--- return true - this will allow button click to run
}

【讨论】:

  • 很遗憾,它不起作用。
  • 是的,它应该可以工作——但在我的例子中,我的真假值倒过来了。例程必须返回 false 以表示失败,并返回 true 以运行。我已经编辑了示例代码以反映这一点:
  • 有效,但我不得不交换正确和错误的位置。
  • 谢谢你,一分钟前我弄清楚了我做了什么,我看到你在我刷新页面之前回答了。 ;D
  • 是的,看看我的编辑 - 这就是我发布“空气代码”时发生的事情,但是是的,它应该可以工作。只要记住说一个 jQuery.UI 对话框,代码不会等待,所以在这种情况下你必须稍微改变代码,但是对于 alert(),或者等待的代码 - 你没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 2017-09-01
  • 1970-01-01
  • 2021-01-21
相关资源
最近更新 更多