ASP.Net LinkBut​​ton防止回发不起作用 - JavaScript

时间:2014-06-27 17:09:59

标签: javascript asp.net sharepoint-2010 webforms dopostback

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

中很明显

但是,当此逻辑应用于ASP.Net LinkBut​​ton时:

<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">

有人想要根本原因吗?我需要移动foward所以没有时间。 :O)

0 个答案:

没有答案