Ответ 1
Да, RadioButtonList отображает ужасный HTML.
В любом случае, все еще легко получить их из jQuery.
Try
$('span.myclass input:radio')
Выше будут отображаться все переключатели внутри диапазона с классом "myclass".
Есть ли способ установить класс CSS для элемента ввода в списке переключателей? Я хотел бы ссылаться на эти значения формы по классу в jQuery.
Учитывая ASP.NET RadioButtonList с классами, установленными в ListItems:
<asp:RadioButtonList ID="RadioButtonList" runat="server">
<asp:ListItem class="myClass" Text="Yes" Value="1" />
<asp:ListItem class="myClass" Text="No" Value="0" />
</asp:RadioButtonList>
Отметьте как:
<span id="RadioButtonList" class="radioButtonListField myClass">
<span class="myClass">
<input id="RadioButtonList_0" type="radio" value="1"
name="RadioButtonList"/>
<label for="RadioButtonList_0">Yes</label>
</span>
<span class="myClass">
<input id="RadioButtonList_1" type="radio" value="0"
name="RadioButtonList"/>
<label for="RadioButtonList_1">No</label>
</span>
</span>
К сожалению, класс "myClass" добавлен в <span>
, который содержит элемент переключателя, а не сам <input>
. Как я мог заставить его выглядеть так:
<span id="RadioButtonList" class="radioButtonListField myClass">
<span>
<input id="RadioButtonList_0" class="myClass" type="radio" value="1"
name="RadioButtonList"/>
<label for="RadioButtonList_0">Yes</label>
</span>
<span>
<input id="RadioButtonList_1" class="myClass" type="radio" value="0"
name="RadioButtonList"/>
<label for="RadioButtonList_1">No</label>
</span>
</span>
(Это даже не связано с вопросом о добавлении классов к динамически связанным спискам RadioButtonLists.)
Да, RadioButtonList отображает ужасный HTML.
В любом случае, все еще легко получить их из jQuery.
Try
$('span.myclass input:radio')
Выше будут отображаться все переключатели внутри диапазона с классом "myclass".
Альтернативой, которую вы, возможно, захотите сделать, является изменение вашего класса CSS для поддержки визуализации управления сервером.
Итак, в вашем CSS вместо следующего:
.myClass { ... }
Вы используете это:
.myClass input { ... }
Я не знаю, можно ли объявить атрибут класса (через класс или CSSClass) декларативным образом; однако вышеизложенное должно дать вам работу.
untested
$('.myclass input:radio').each(function() {
this.css({'style-name':'style-value'})
)};
После отображения списка вы можете манипулировать клиентской стороной css, используя вышеуказанный оператор.
Используя .NET, вы можете создать обработчик событий для события RowBinding. Это позволит вам получить доступ к отдельным элементам управления в каждом элементе списка. Как только вы потянете элемент управления RadioButton, вы можете программно установить его в CssClass, чтобы применить свой класс на уровне RadioButton.
Вы также можете использовать jquery, чтобы найти элементы управления радиокнопками, в которых применяется myClass, а затем применить к нему еще один класс.
В-третьих, вы можете просто изменить определение MyClass, чтобы также указать, что оно применяется только к элементам ввода под элементами, в которых применяется MyClass.
ответ desigeek довольно хорош.
Чтобы заставить это работать для радиолюбителей, я должен был сделать это на document.ready()
$('#<%=radRisksMarginTrading.ClientID %>_0').addClass("validate[required]");
$('#<%=radRisksMarginTrading.ClientID %>_1').addClass("validate[required]");
Я уверен, что есть намного лучший способ сделать это, зацикливая, но мне нужно быстрое исправление для 5 списков радиообмена.