如何从插入到 innerHtml 的单选按钮中获取值

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

在客户端还是在服务器上? 我假设服务器因为提到了“回发” 【参考方案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,我应该得到什么样的值?

以上是关于如何从插入到 innerHtml 的单选按钮中获取值的主要内容,如果未能解决你的问题,请参考以下文章

Android从选定的单选按钮获取价值

从不同的单选按钮组获取单选按钮标签并附加到分区

获取单选按钮值并通过 ajax 发送到 php

如何使用中继器中的单选按钮从 sql 中检索数据?

单击提交后如何获取选定的单选按钮以显示特定的隐藏 div?

如何设置从模拟 json 检查的单选按钮值