【问题标题】:Disabled radio button losing value after postback回发后禁用单选按钮失去价值
【发布时间】:2011-02-14 22:52:50
【问题描述】:

我有两个在页面加载时被 javascript 禁用的单选按钮。 RadioButton1 默认选中。当我点击按钮进行回发时,RadioButton1 不再被选中。

有人知道为什么吗?

这是我的代码示例。后面的代码是空的。

<asp:RadioButton ID="RadioButton1" runat="server"  GroupName="group" Checked="true"/>
<asp:RadioButton ID="RadioButton2" runat="server" GroupName="group" />
<asp:Button ID="Button1" runat="server" Text="Button"></asp:Button>
<script type="text/javascript">
    window.onload = function () {
        var RadioButton1 = document.getElementById('<%= RadioButton1.ClientID %>');
        var RadioButton2 = document.getElementById('<%= RadioButton2.ClientID %>');

        RadioButton1.disabled = true;
        RadioButton2.disabled = true;
    };
</script>

【问题讨论】:

标签: javascript asp.net


【解决方案1】:

这是 HTML 的行为,而不是 ASP.NET。一旦您将输入元素标记为禁用,它就不再发布在请求中。对于文本字段,可以通过使用 Readonly insted of Disabled 来避免这种情况,但我认为它不适用于复选框或单选按钮。如果您仍想发布该值,则必须将其发送到与单选按钮相关的隐藏字段中,并在服务器上手动处理。

编辑:

Here您可以阅读有关禁用和只读元素以及有关表单提交的信息:

禁用控制:

禁用控制无法成功。

只读控件:

只读元素可能会成功。

表单提交:

一个成功的控制是有效的 提交。每一次成功的控制 其控件名称与其配对 当前值作为提交的一部分 形成数据集。成功的控制 必须在表单元素中定义 并且必须有一个控件名称。

但是:

  • 禁用的控件无法成功。

【讨论】:

  • 谢谢,这解释了我的问题。你知道为什么会这样吗?
【解决方案2】:

这是因为禁用的 &lt;input&gt; 元素不会在回发时向服务器发送任何值,并且单选按钮不会将其选中状态存储在 ViewState 中,因此也不能以这种方式持久化。

由于 RadioButton1RadioButton2 都被禁用,它们的名称 (group) 不会成为回发的一部分,因此 ASP.NET 将清除它们。

【讨论】:

    【解决方案3】:

    尝试让他们获得readonly="readonly" 属性。禁用的输入不会发布值。

    http://www.w3schools.com/tags/att_input_readonly.asp

    【讨论】:

    • 问题是链接说只读属性只能用于文本和密码类型的输入。
    • 很公平,我最近使用只读但它是一个文本框。不知道这不适用于所有输入。
    【解决方案4】:

    如果元素被禁用而不是它们不被禁用,将在回发时发送。在进行回发之前,您必须先启用它们。 jQuery 中的示例:

     $('#<%= Button1.ClientID %>').click(function () { RadioButton1.disabled = false;
                                                       RadioButton2.disabled = false; });
    

    【讨论】:

      【解决方案5】:

      或者在服务器级别生成禁用的复选框/单选按钮时,还为同名生成&lt;input type='hidden'.. 标记。这将发布您的价值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-09
        • 2016-04-22
        相关资源
        最近更新 更多