2

我创建了 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

并且能够从 js 访问它们$("input[name=ApprovalGroup]:checked").val()但是我需要添加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

是否可以防止名称更改?

4

3 回答 3

4

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

$("input[name$=ApprovalGroup]:checked")
于 2013-03-18T14:57:13.843 回答
3

.NET 需要该名称用于自己的目的,但这并不能阻止您为自己使用 CSS 类名称。

这样你就可以使用$('.classname').val(). 您可以为字段使用单独的类名,或共享它们以组成组。

于 2013-03-18T14:57:15.147 回答
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")
于 2013-03-18T15:08:26.163 回答