在我的页面中,我有一组两个单选按钮。如果单击单选按钮2,它将激活搜索按钮。如果用户单击此搜索按钮,它将使用jQuery .ajax调用来检索数据并在jqGrid中显示。
启动时必须禁用搜索按钮。如果禁用,我的意思是如果用户点击它,则不会发生任何事情。
由于按钮是asp按钮,我使用Enabled as:
<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" />
在网络上,我知道Enabled
将转换为HTML中的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('ctl00$MainContent$btnSearch','')" id="MainContent_btnSearch" Disabled="True" />
我忍不住要问为什么。由于Javascript可以插入到ASP.NET页面中,如果使用Enabled="false"
(Microsoft方式)禁用了按钮,我可以使用JavaScript将其启用。但是在这个时候,我将失去按钮和onclick()指向的函数之间的联系!
答案 0 :(得分:0)
这是默认行为,因为该按钮仍被禁用且没有任何功能。重新启用它,将触发PostBack并将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');" />