1

A checkbox(need_delivery) 用于指示接下来的 2 个文本框是否显示。这 2 个文本框用 id 包裹在 div 中task_request_delivery。这是 simple_form 视图中的代码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。这是我们发现的:

  1. 选中或取消选中复选框时, 的值rpt始终为 1。
  2. if ( rpt == 1 || rpt == 'true' || rpt == '1')总是返回 false

最初选中该框后,两个文本框将被隐藏。之后,取消选中或选中该框并没有改变视图上的任何内容(2 个文本框仍然隐藏)。并且rpt总是1并且if ( rpt == 1 || rpt == 'true' || rpt == '1')总是被评估为false并且这是矛盾的(rpt是1,然后,if应该是真的)。上面的代码有什么问题?谢谢您的帮助。

4

1 回答 1

2

我认为你应该使用.is(':checked')方法来确保你的复选框被选中。

于 2013-07-30T09:17:03.480 回答