将jquery click事件添加到asp:按钮可防止按钮进入事件后面的代码?

时间:2011-05-19 17:55:57

标签: jquery asp.net

我必须放弃它,但我不确定: - )

我有一个标准的asp:按钮控件,后面有一个代码点击事件。

然后,为了防止双击我在客户端点击禁用按钮:

$('#<%=BTN_GCR_CheckCardValue2.ClientID %>').bind('click', function () {
 $('#<%=BTN_GCR_CheckCardValue2.ClientID %>').attr('disabled', 'disabled');
});

已禁用的工作,页面回发(进入页面的加载事件),但不会输入事件背后的代码。

此jquery代码使用bind方法,也使用click进行了尝试,结果相同。

我在俯瞰什么?

EDIT 按钮

<asp:Button ID="BTN_GCR_CheckCardValue2" runat="server" CssClass="individual_small_inputs"
                        OnClick="BTN_GCR_CheckCardValue2_Click" Text="CHECK" />

导致

<input type="submit" name="ctl00$ctl00$CPHMainSection$CPH_LeftSection$BTN_GCR_CheckCardValue2" value="CHECK" id="ctl00_ctl00_CPHMainSection_CPH_LeftSection_BTN_GCR_CheckCardValue2" class="individual_small_inputs" />

4 个答案:

答案 0 :(得分:3)

禁用的控件不会在后端获取任何事件。首先,发生禁用。然后单击事件气泡到默认处理程序并发生回发。这就是你所看到的原因。至于可行的自定义解决方案...尝试使用jquery简单地使此按钮不可见(css属性“visibility”设置为隐藏)而不是禁用它。如果这样可行,您可以继续进行实验。例如,您可以使用某种消息(例如“正在进行中...”)为您的按钮设置容器。然后将css属性“position”设置为按钮的“绝对”值。这样,您的按钮将覆盖消息。当按钮变为不可见时,用户将看到该消息。例如,在这里使用类似的方法:http://s-c.me/ (大“突出IT!”按钮)。 附:对不起,我还不能发送screnshots。

答案 1 :(得分:2)

如果你的目的是防止双重发布相同的内容,我敢说这不是一个好方法。

<小时/> 您是否听说过名为Dave Ward的人和名为PostBack Ritalin的人? 请试试。它是一个超级干净的解决方案。

答案 2 :(得分:1)

最终解决方案:D

$('#<%= BTN_GCR_CheckCardValue2.ClientID %>').click(function () {
        $(this).attr('disabled', 'disabled');
        $(this).parent().append($('<input />', {type: "hidden", name: $(this).attr('name') }));
});

答案 3 :(得分:0)

不是真正正确的解决方案,但可以将其放在setTimeout(function(){ ...disable... }, 1);