javascript - 为什么 simple_form View 中的复选框在 rails 3.2 中选中或取消选中时总是返回 1?

标签 javascript jquery ruby-on-rails-3 simple-form

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的值。这是我们的发现:

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

最初选中该框后,2 个文本框被隐藏。之后,取消选中或选中该框不会更改 View 上的任何内容(2 个文本框仍然隐藏)。此外,rpt 始终为 1if ( 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/

相关文章:

ruby-on-rails - link_to 删除 url 不起作用

mysql - 关于重复 key 更新问题

javascript - Angular JS - 如何将表单验证作为全局服务?最佳实践

javascript - D3 : Uncaught ReferenceError: stream_layers is not defined

javascript - 消除跨度问题

ruby-on-rails-3 - Rails - 没有路由匹配 { :action= >"new", :controller= >"comments"}

javascript - 如何使用 Json 对象填充 Highchart

javascript - 递归 Angular div模板

JQuery - 向类添加鼠标事件监听器

javascript - 为什么/什么时候 $.inArray 返回 -1?