2013-03-18 4 views
2

Я создал 2 радиокнопкуRadio Button Name Изменение

<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 

Возможно ли предотвратить изменение названия?

+0

Я думаю, что все 3 ответа были хорошими и не знали, что отметить в качестве ответа, поэтому я отметил тот, который я использовал. – JayGee

ответ

4

Вы можете использовать $= селектор, который выбирает атрибуты, значения которых заканчиваются заданной подстроки:

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

Итак, почему бы просто не использовать селектор «ends with», поскольку исходное имя всегда будет в конце сгенерированного имени (по соглашению ASP.NET)? Безопаснее, где '* =' может совпадать с «Утверждение группы». И, вероятно, экономит небольшую обработку, которую мы не видим, но все же. – Ian

+0

@ Я уверен, что это сработает, я думаю. '$ = ApprovalGroup' –

+0

' $ = 'был бы здесь. '* =' вызовет проблемы, если у вас также есть элемент управления с именем «ApproigenGroupValidator», например. ASP только добавляет. –

3

.NET хочет имя для своих собственных целей, но это не мешает вам за помощью CSS имя класса для вашего.

Таким образом, вы можете использовать $('.classname').val(). Вы можете использовать отдельные имена классов для полей или делиться ими для создания групп.

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") 
+0

Если вы собираетесь использовать пользовательский атрибут, по крайней мере, предположите, что он действительный - http://html5doctor.com/html5- custom-data-attributes/ – Ian

+0

спасибо за внимание :) –