checkbox
(need_delivery) 用于指示接下来的 2 个文本框是否显示。这 2 个文本框包含在 ID 为 task_request_delivery
的 div 中。这是 simple_form View task_request
中的代码:
<%= f.input :need_delivery, :label => 'Need Delivery:', :as => :boolean %>
<div id="task_request_delivery">
<%= f.input :what_to_deliver, :label => 'Content:', :input_html => {:rows => 4} %>
<%= f.input :delivery_instruction, :label => 'Instruction:', :input_html => {:rows => 4} %>
</div>
javascript下对应的js代码为:
$(function(){
$("#task_request_need_delivery").change(function() {
var rpt = $('#task_request_need_delivery').val();
alert(rpt);
if ( rpt == 1 || rpt == 'true' || rpt == '1') {
$("#task_request_delivery").show();
} else {
$("#task_request_delivery").hide();
}
});
});
alert(rpt)
被插入以显示rpt
的值。这是我们的发现:
- 选中或取消选中复选框时,
rpt
的值始终为 1。 if ( rpt == 1 || rpt == 'true' || rpt == '1')
总是返回 false
最初选中该框后,2 个文本框被隐藏。之后,取消选中或选中该框不会更改 View 上的任何内容(2 个文本框仍然隐藏)。此外,rpt
始终为 1
和 if ( rpt == 1 || rpt == 'true' || rpt == '1')
始终评估为 false
,这是矛盾的(rpt
为 1,然后 if
应为 true)。上面的代码有什么问题?感谢您的帮助。
最佳答案
我认为你应该使用 .is(':checked')
方法来确保你的复选框是否被选中。
关于javascript - 为什么 simple_form View 中的复选框在 rails 3.2 中选中或取消选中时总是返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17938717/