Javascript ASP.net 将单选按钮在模式弹出窗口中启用为 false

标签 javascript asp.net

当通过单击按钮显示模式时,如何将启用的单选按钮设置为默认为 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/

相关文章:

javascript - TypeScript -- 来自全局范围的 new Image()

asp.net - MVC 3 搜索路径

c# - 将数据库中的所有详细信息存储到一个文件中,然后下载该文件

javascript - 如何从 Angular JS API 调用 Node.js Web API?

javascript - 如何在 postman 中比较响应与全局变量

javascript - Cordova 插件的执行方法中的 AsyncTask 无法正常工作

javascript - Jquery如何添加最后输入的字符

c# - 找不到类型或命名空间名称 'type/namespace'.. - Asp.Net - C#

asp.net - 沙盒化 Google 自定义搜索引擎的样式

asp.net - 激活 "authorization"会导致 CSS 停止工作!怎么解决呢?