这段代码实际上与onclick事件工作,检查与开发者扩展类似Firebug生成的HTML代码在浏览器中,以确保属性已正确设置。
<%= form_for([book.category, book, chapter], remote: true) do |f| %>
<%= f.radio_button :type, true, checked: 'checked', onClick: "alert('hi TRUE!');" %>
<%= f.label :type, 'Link' %>
<%= f.radio_button :type, false, onClick: "alert('hi False!');" %>
<%= f.label :type, 'Text' %>
<% end %>
另一种方法是使用数据标签和定义行为然后将其绑定的JavaScript(参考:http://blog.bigbinary.com/2012/10/10/data-behavior.html):
<%= form_for([book.category, book, chapter], remote: true) do |f| %>
<%= f.radio_button :type, true, checked: 'checked', data: {behavior: "clickable"} %>
<%= f.label :type, 'Link' %>
<%= f.radio_button :type, false, data: {behavior: "clickable" } %>
<%= f.label :type, 'Text' %>
<% end %>
JavaScript的:
$(document).ready(function() {
$('input[type="radio"][data-behavior="clickable"]').click(function(evt) {
alert("you chose the option: " + $(this).val());
});
});
让我们把这个延伸到你的sce纳里尼奥用于隐藏/显示其他的东西:
查看ERB:
<%= form_for([book.category, book, chapter], remote: true) do |f| %>
<%= f.radio_button :type, true, checked: 'checked', data: {behavior: "toggle-products"} %>
<%= f.label :type, 'Link' %>
<%= f.radio_button :type, false, data: {behavior: "toggle-products" } %>
<%= f.label :type, 'Text' %>
<% end %>
的JavaScript:
$(document).ready(function() {
$('input[type="radio"][data-behavior="toggle-products"]').click(function(evt) {
if($(this).val() == "true") {
$('.products').show();
} else {
$('.products').hide();
}
});
});
我想这两个建议,但既不给我的警告。 – user3234309
嘿,我很抱歉有一些错别字,我想我已经修好了,请再试一次。确保您使用浏览器的开发人员扩展(如Firebug)并检查生成的HTML代码是否已正确设置onClick属性。 – sled
我重构和测试了第一个例子,测试了第二个例子 – sled