gpt4 book ai didi

javascript - 缺少 asp :Button if I use Enabled=false 的 OnClientClick(或 HTML 中的 onclick)

转载 作者:行者123 更新时间:2023-11-28 03:58:54 26 4
gpt4 key购买 nike

在我的页面中,我有一组两个单选按钮。如果单击单选按钮 2,它将激活搜索按钮。如果用户单击此搜索按钮,它将使用 jQuery .ajax 调用来检索数据并显示在 jqGrid 中。

启动时必须禁用搜索按钮。禁用是指如果用户单击它,则不会发生任何事情。

由于按钮是asp按钮,我使用Enabled作为:

<asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" Enabled="false" OnClientClick="return SearchAccessCode()" />

以下是用于检测/处理单选按钮组切换的代码:

$('input[name$=radioGroup]').change(function() {
if ($('input[name$=radioGroup]:checked').val() == "rbFirst") {
$('#<%=btnSearch.ClientID%>').prop('disabled', true);
}
else {
$('#<%=btnSearch.ClientID%>').prop('disabled', false);
}
}

当我调试页面时,单击第二个单选按钮 (rbSecond) 后,将启用“搜索”按钮。我点击它但没有任何反应!我检查生成的 HTML,发现它与其他按钮不同。没有与之关联的 onclick()!

<input type="button" name="ctl00$MainContent$btnSearch" value="Search" id="MainContent_btnSearch" disabled="disabled" class="aspNetDisabled" />

从网络上,我知道 HTML 中的 Enabled 将转换为 disabled。因此,我将 Enabled 替换为 disabled

<asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" Disabled="True" OnClientClick="return SearchAccessCode()" />

打开生成的HTML,发现它与其他asp按钮相同。含义:它有onclick()。当然,当我按下“搜索”按钮时,实际上执行了搜索功能!

 <input type="button" name="ctl00$MainContent$btnSearch" value="Search" onclick="return SearchAccessCode();__doPostBack(&#39;ctl00$MainContent$btnSearch&#39;,&#39;&#39;)" id="MainContent_btnSearch" Disabled="True" />

我只是忍不住要问为什么。由于 Javascript 可以插入到 ASP.NET 页面中,因此如果使用 Enabled="false" (Microsoft 方式)禁用按钮,我可以使用 JavaScript 重新启用它。但此时,我就会失去按钮和onclick()指向的函数之间的联系!

最佳答案

这是默认行为,因为该按钮无论如何都会被禁用并且没有任何功能。重新启用它,将触发回发并将 OnClientClick 添加到按钮:

<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" Enabled="false" OnClientClick="console.log('btnSearch onClientClickEvent');" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button1" Text="Toggle Search Button" UseSubmitBehavior="false" runat="server" OnClick="Button1_Click" />

.cs:

protected void Button1_Click(object sender, EventArgs e) => btnSearch.Enabled = !btnSearch.Enabled;

如果您想将 OnClientClick 事件保留为标记,即使按钮被禁用,您也必须使用 JavaScript,这样就不会触发 PostBack:

document.getElementById("<%= btnSearch.ClientID %>").disabled = true;

或者正如您所说,只需使用 disabled 属性:

<asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" disabled OnClientClick="console.log('btnSearch onClientClickEvent');" />

关于javascript - 缺少 asp :Button if I use Enabled=false 的 OnClientClick(或 HTML 中的 onclick),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47324325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com