繁体   English   中英

ASP.Net LinkButton 防止回发不起作用 - JavaScript

[英]ASP.Net LinkButton Prevent Postback Not Working - JavaScript

我知道如何防止 href 属性中的 javscript 触发,如 JSFiddle ( http://jsfiddle.net/mkarr/KNefK/ ) 所示

但是,当此逻辑应用于 ASP.Net LinkButton 时:

<asp:LinkButton ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return formTest.validate(event);" OnClick="btnSubmit_Click"></asp:LinkButton>

这转化为:

<a onclick="return formTest.validate(event);" id="ctl00_m_g_87932399_e546_4e12_8297_982b811d8cea_ctl00_btnSubmit" href="javascript:WebForm_DoPostBackWithOptions('blah blah blah')">Submit</a>

formTest.validate() 方法确实执行正确并返回 false,但WebForm_DoPostBackWithOptions总是在之后立即触发!

任何人都可以看到我的逻辑中我看不到的任何缺陷吗?

编辑:

此外,针对此问题已接受了多个堆栈溢出解决方案,但所有这些解决方案实际上都在做我已经做过的事情,这让我相信我错过了一些简单的事情!

回答:

由于我还没有信誉(LOL),因此我无法回答我自己的问题,这里是一个带有答案的编辑:

关闭@QBM5 的不使用 ASP.Net 控件的原始提示,我解决了问题,尽管我仍然不知道为什么最初的问题首先发生(有人谈到 ASP.Net 吗?将其关闭,然后回到这里想到):o)

我用以下内容替换了LinkButton ASP.Net 控件:

<input type="submit" value="Submit" id="btnSubmitButton" runat="server" OnServerClick="btnSubmitButton_Click" class="submitBtn" />

然后我通过 jQuery 绑定了.submitBtn的点击事件:

$('.submitBtn').on('click', function (e) {
    if (!instance.validate()) {
        e.preventDefault();
    }
});

诀窍是在控件上使用OnServerClickrunat="server"但远离LinkButton是目标,回发行为完全不同。

这转化为:

<input onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(''); "  type="submit" id="ctl00_m_g_87932399_e546_4e12_8297_982b811d8cea_ctl00_btnSubmitButton" value="Submit" class="submitBtn">

有人想找出根本原因吗? 我需要继续前进,所以没有时间。 :o)

通过更改 element.href = "#",以下内容对我有用

<asp:LinkButton ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return ClientSideValidation()" OnClick="btnSubmit_Click"></asp:LinkButton>

Javascript 验证

function ClientSideValidation() {
  var element = document.getElementById("<%=txtAmount.ClientID%>");
  element.href = "";

  if (element.value == "") {

    element.href = "#";
    return false;
  }

  return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM