簡體   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