【问题标题】:How can I get value from radio-button inserted into innerHtml如何从插入到 innerHtml 的单选按钮中获取值
【发布时间】:2010-12-19 13:05:30
【问题描述】:

我有一个带有单选按钮列的表格。我设法使单选按钮列动态插入到单元格中(如果重要,则为 div)。但是,在回发时,innerHtml 尚未更新为“已检查”属性。

您能否告诉我如何(在服务器上)找出单选按钮是否已被选中?

更多信息:这是在更新面板内的用户控件上。

This 会是关于我的主题的好帖子,但仍然无济于事

【问题讨论】:

  • 在客户端还是在服务器上?
  • 我假设服务器因为提到了“回发”

标签: asp.net radio-button innerhtml


【解决方案1】:

您不能使用标准的 asp:RadioButton 并使用 javascript 来确保它是互斥的。我之前通过向单选按钮添加自定义属性然后使用 js 函数取消选中具有该属性的所有项目,然后检查选定的项目来完成此操作。这解决了 IE 问题,该问题阻止 groupname 属性在不同容器中的单选框上工作。

radioButton.InputAttributes.Add("ClientGroupName", "grpRadioList");
radioButton.InputAttributes.Add("onclick",
  string.Format(
     "javascript:radiobuttonToggle('{0}','ClientGroupName','grpRadioList');"  
      ,radioButton.ClientID));

并使用以下 JS 取消选中所有收音机,然后选中您想要的收音机。 请注意,我使用 InputAttributes 而不是 Attributes,因为单选按钮包装在 span 标签内,因此 InputAttributes 用于添加到实际输入控件而不是 span 的项目。

function radiobuttonToggle(selectedRB, attribName, attribValue)
{
    var objRadio = document.getElementById(selectedRB);

    for(i = 0; i < document.forms[0].elements.length; i++)
    {
        elm = document.forms[0].elements[i];
        if (elm.type == 'radio')
        {
            if(elm.getAttribute(attribName) == attribValue)
                elm.checked = false;
        }
    }
    objRadio.checked = true; 
}

然后,您可以将 radioButton.Checked 作为属性公开在您的 CS 文件中,并将其用作控件。

【讨论】:

    【解决方案2】:

    查看Form.Request("radio-name") != null

    只有在检查时才会得到一个非空值。

    【讨论】:

    • Oleg,“radio-name”需要替换为您的复选框的“name”属性值(而不是 id 属性。)
    • Request.Form[rbtnReplaced.ClientID] 还是 Request[rbtnReplaced.ClientID]?两者都为空
    • 两者都不是。尝试找到“name”属性的值;不是 ID 属性。尝试在您的页面上查看源代码,以查看单选按钮的名称。
    【解决方案3】:

    确保您的页面元素在回发时正确重建。任何第一次插入单选按钮的绑定过程都必须重新运行,然后才能第二次访问它们。

    【讨论】:

    • 我可以看到innerHtml,但它看起来和我插入的一模一样。
    【解决方案4】:

    这是一个工作示例,首先我通过 you linked 方法将收音机添加到我的网络表单:

    function addRadio()
    {
       try{  
            rdo = document.createElement('<input type="radio" name="fldID" />');  
        }catch(err){  
         rdo = document.createElement('input');  
        }  
        rdo.setAttribute('type','radio');  
        rdo.setAttribute('name','fldID'); 
        document.getElementById('container').appendChild(rdo);
    }
    

    然后在后面的代码中,我只使用下面的代码来获取收音机的值:

    string value = Request["fldID"];
    

    因此,请确保您尝试获取服务器端单选按钮的名称。您应该在服务器端使用 name 属性,而不是 id。

    【讨论】:

    • protected void Page_Init(object sender, EventArgs e) { div.InnerHtml = ""; } protected void Button1_Click(object sender, EventArgs e) { Console.WriteLine(Request["gnReplace"]); } 困惑于无论选择如何都返回的值“on”。如果 name 是所谓的 RadioGroup,我应该得到什么样的值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多