我创建了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
是否可以防止名称发生变化?
答案 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")