单选按钮名称更改

时间:2013-03-18 14:54:23

标签: javascript asp.net html

我创建了2个单选按钮

<input type="radio" name="ApprovalGroup" runat="server" id="ApprovedOnly" value="true" />Approved
<input type="radio" name="ApprovalGroup" runat="server" id="UnapprovedOnly" value="false" />Unapproved

并且能够使用$("input[name=ApprovalGroup]:checked").val()从js访问它们但是我需要添加runat="server",以便我可以访问后面代码中的单选按钮。

我遇到的问题是由于内容占位符而改变了单选按钮名称。我正在使用ClientIDMode="Static",但它只保护id值,而不是名称。单选按钮呈现为

<input value="true" name="ctl00$cphContent$ApprovalGroup" type="radio" id="ApprovedOnly" />Approved
<input value="false" name="ctl00$cphContent$ApprovalGroup" type="radio" id="UnapprovedOnly" />Unapproved

是否可以防止名称发生变化?

3 个答案:

答案 0 :(得分:4)

您可以使用$=选择器,它选择值以给定子字符串结尾的属性:

$("input[name$=ApprovalGroup]:checked")

答案 1 :(得分:3)

.NET希望将名称用于自己的目的,但这并不能阻止您使用自己的CSS类名。

这样你可以使用$('.classname').val()。您可以为字段使用单个类名,也可以共享它们以创建组。

答案 2 :(得分:1)

$("input[name*=ApprovalGroup]:checked")

是一个很好的解决方案,但如果有另一个输入包含这些单词,那么它可能会发生冲突。更安全的解决方案是使用您自己的属性。 例如;

 <input type="radio" name="ApprovalGroup" data-group="group1" runat="server" id="ApprovedOnly" value="true" />Approved
 <input type="radio" name="ApprovalGroup" data-group="group1" runat="server" id="UnapprovedOnly" value="false" />Unapproved

然后使用下面的过滤器;

$("input[data-group='group1']:checked")