当通过单击按钮显示模式时,如何将启用的单选按钮设置为默认为 false。单击按钮时,它不会禁用单选按钮。我该如何正确地做呢。谢谢
<小时/>我的 JavaScript 函数
function btnDefaultRadios() {
document.getElementById('<%= rdPermanent.ClientID %>').disabled = true;
document.getElementById('<%= rdNonPermanent.ClientID %>').disabled = true;
document.getElementById('<%= rdAdministrative.ClientID %>').disabled = true;
document.getElementById('<%= rdTechnical.ClientID %>').disabled = true;
document.getElementById('<%= rdWithhRata.ClientID %>').disabled = true;
document.getElementById('<%= rdContractual.ClientID %>').disabled = true;
document.getElementById('<%= rdCasual.ClientID %>').disabled = true;
}
<小时/>
我的按钮触发模式
<asp:Button ID="btnAdd" runat="server" SkinID="button" Text="Add New Position" Width="168px" OnClientClick="btnDefaultRadios(this);"/>
<小时/>
我的模态 - 我的控件位于面板内
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="Label1"
PopupControlID="pnladd" BackgroundCssClass="modalBackground" OnOkScript="OkButtonClick()">
</cc1:ModalPopupExtender>
最佳答案
一个快速的jsfiddle https://jsfiddle.net/8Lq73hye/表明你的 javascript 如果被执行的话应该可以工作。您可以在浏览器上的开发人员工具中放置一个断点,然后逐步执行代码以查看禁用逻辑是否确实有效。
可能发生的情况是,您的 js 正在执行,但是单击按钮后立即导致回发。如果您使用的是本地计算机,这种情况可能会在您不知情的情况下很快发生。
为了防止意外回发,请确保您的 btnDefaultRadios 函数返回 false
function btnDefaultRadios() {
document.getElementById('<%= rdPermanent.ClientID %>').disabled = true;
document.getElementById('<%= rdNonPermanent.ClientID %>').disabled = true;
document.getElementById('<%= rdAdministrative.ClientID %>').disabled = true;
document.getElementById('<%= rdTechnical.ClientID %>').disabled = true;
document.getElementById('<%= rdWithhRata.ClientID %>').disabled = true;
document.getElementById('<%= rdContractual.ClientID %>').disabled = true;
document.getElementById('<%= rdCasual.ClientID %>').disabled = true;
return false;
}
返回 false 将停止回发。一个常见的错误是忘记在 OnClientClick 调用上返回该函数结果,因此您还必须将 OnClientClick 更改为
<asp:Button ID="btnAdd" runat="server" ... OnClientClick="return btnDefaultRadios(this);"/>
编辑:
aspx 的简化工作示例:
<%@ Page Language="C#" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test Client Side JS on Button Click</title>
<script>
function btnDefaultRadios()
{
document.getElementById('<%= rdPermanent.ClientID %>').disabled = true;
document.getElementById('<%= rdNonPermanent.ClientID %>').disabled = true;
return false;
}
function OkButtonClick(){}
</script>
<style>
#pnladd
{
background-color: #fff;
}
.modalBackground
{
background-color: #666;
background-color: rgba(200,200,200,0.75);
}
</style>
</head>
<body>
<form id="HtmlForm" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Label runat="server" ID="Label1">label1</asp:Label>
<asp:Button ID="btnAdd" runat="server" Text="Add New Position"
Width="168px" OnClientClick="return btnDefaultRadios(this);" />
<asp:Panel runat="server" ID="pnladd" Width="300" Height="300">
<asp:RadioButton runat="server" ID="rdPermanent" Text="Permanent"/>
<asp:RadioButton runat="server" ID="rdNonPermanent" Text="Non Permanent"/>
</asp:Panel>
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnAdd"
PopupControlID="pnladd" BackgroundCssClass="modalBackground" OnOkScript="OkButtonClick()">
</cc1:ModalPopupExtender>
</div>
</form>
</body>
</html>
关于Javascript ASP.net 将单选按钮在模式弹出窗口中启用为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44064328/