【问题标题】:How to prevent execution of serverside function using javascript?如何防止使用javascript执行服务器端功能?
【发布时间】:2014-09-07 02:32:57
【问题描述】:

我正在尝试测试文本框值。

如果值符合我的条件,则执行 javascript 函数

否则

在后面的代码中执行 textchanged 事件。

我有一个使用 javascript on change 触发的 jquery 函数

JAVASCRIPT

function test() {
  if ($('#<%= txt.ClientID%>').val() == '1') {
      return false;
    }
};

ASP.NET

<asp:TextBox ID="txt" runat="Server" AutoPostBack="true" onchange="test(this)" />

VB.NET

Protected Sub txt_TextChanged(sender As Object, e As EventArgs) Handles txt.TextChanged
...
End Sub

虽然调试函数明显返回 false,但 textchanged 事件仍会导致回发。

标记呈现为

onchange="test(this);setTimeout('__doPostBack(\'ctl00$ctl00$ctl00$Master$Content$txt\',\'\')', 0)"

问题

如何将 textchanged 事件限制为仅在满足某些客户端条件时才执行?

【问题讨论】:

    标签: javascript jquery asp.net vb.net postback


    【解决方案1】:

    尝试返回错误的文本框内联如下:-

    function test() {
        if ($('#<%= txt.ClientID%>').val() == '1') {
            return false;
        }
        return true;
    };
    
    
    <asp:TextBox ID="txt" runat="Server" AutoPostBack="true" onchange="if(!test(this)) return false;" />
    

    【讨论】:

    • 你是个天才,这似乎让我走上了正轨。我一直在为这个问题挠头。你有没有机会解释为什么这会起作用而我的代码不会?我真的很感兴趣。
    • 在 js 函数中返回 true/false 用于退出具有值 true/false 的 js 函数,因此根据您的代码,您可以解释 onchange="false" 这并不意味着停止回发.但是如果你在同一个地方设置它 onchange="return false" 那么它将停止回发。所以你也可以避免像 onchange="return test();" 这样的回发
    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多