При регистрации на openstreetmap на странице терминов я заметил, что нажатие на ярлыки не проверяет переключатели, связанные с ними. Вот HTML:
<!-- legale is GB -->
<form action="/user/terms" method="post">
<p>
Please select your country of residence:
<input id="legale_fr" name="legale"
onchange="Element.update("contributorTerms", "<img alt=\"Searching\" src=\"/images/searching.gif?1313181320\" />");; new Ajax.Request('/user/terms?legale=FR', {asynchronous:true, evalScripts:true})"
type="radio" value="FR" />
<label for="legale_FR">France</label>
<input id="legale_it" name="legale" ... type="radio" value="IT" />
<label for="legale_IT">Italy</label>
<input checked="checked"
id="legale_gb" name="legale" ... type="radio" value="GB" />
<label for="legale_GB">Rest of the world</label>
</p>
</form>
Как видите, флажок id="legale_gb"
не соответствует метке for="legale_GB"
.
Теперь сайт openstreetmap на самом деле с открытым исходным кодом, поэтому мы можем прочитать term.html.erb :
<!-- legale is <%= @legale %> -->
<% form_tag :action => 'terms' do %>
<p>
<%= t 'user.terms.legale_select' %>
<% [['france', 'FR'], ['italy', 'IT'], ['rest_of_world', 'GB']].each do |name,legale| %>
<%=
radio_button_tag 'legale', legale, @legale == legale,
:onchange => remote_function(
:before => update_page do |page|
page.replace_html 'contributorTerms', image_tag('searching.gif')
end,
:url => {:legale => legale}
)
%>
<%= label_tag "legale_#{legale}", t('user.terms.legale_names.' + name) %>
<% end %>
</p>
<% end %>
Я новичок в рельсах, но я не вижу там ничего, что могло бы поменять id
тега переключателя. Более того, даже когда я смотрю на источник radio_button_tag , sanitize_to_id Я не вижу, откуда это исходит.
Кто-нибудь понимает, что это вызывает?
Редактировать Заменены label
на radio
в моем описании согласно ответу от