javascript - rails 形式 : change form fields from previously selected fields

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

我有两个 simple_form 字段,如下所示:

<%= f.input :ration_card ,as: :radio_buttons,collection: ["Yes","No"], input_html: {id: "rationcard"} %>
<%= f.input :rationcardNum , label: "Ration Card No." ,input_html: {id: "rationcard_no"} %>  

我想仅当用户为第一个字段选择"is"时才显示第二个字段。我的 Jquery:

$(function(){
    $("#rationcard").change(function(){
        if ($("#rationcard").val()=="Yes"){
            $("#rationcard_no").show();
        } else {
            $("#rationcard_no").hide();
        }
    })
})  

我可以看到js文件包含在页面的头部。

生成的 HTML:

<div class="control-group radio_buttons optional family_ration_card">
 <label class="radio_buttons optional control-label" for="rationcard">Ration card</label>
  <div class="controls">
   <label class="radio">
    <input id="rationcard" class="radio_buttons optional" type="radio" value="Yes" name="family[ration_card]" checked="checked">
Yes
   </label>
  <label class="radio">
   <input id="rationcard" class="radio_buttons optional" type="radio" value="No" name="family[ration_card]">
No
  </label>
 </div>
</div>  

<div class="control-group string optional family_rationcardNum">
 <label class="string optional control-label" for="rationcard_no">Ration Card No.</label>
  <div class="controls">
   <input id="rationcard_no" class="string optional" type="text" value="DGFR12" size="50" name="family[rationcardNum]">
  </div>
</div>

但是动态字段不起作用。这里有什么问题吗?

或者提出任何更好的方法来实现这一目标。

最佳答案

首先,你不能在输入上放置 id,因为你最终会得到两个相同的输入,而 jQuery 只会找到第一个。 其次,您需要在处理程序中使用 $(this)。

你需要排队:

<%= f.input :ration_card ,as: :radio_buttons,collection: ["Yes","No"], wrapper_html: {id: "rationcard"} %>
<%= f.input :rationcardNum , label: "Ration Card No." ,wrapper_html: {id: "rationcard_no"} %>

$(function(){
    var toggle_rationcardNum = function(visible) {
        if (visible){
            $("#rationcard_no").show();
        } else {
            $("#rationcard_no").hide();
        }
    }

    $("#rationcard input").change(function(){
        toggle_rationcardNum($(this).val()=="Yes")
    })

    toggle_rationcardNum($("#rationcard input:checked").val()=="Yes")
})();  

关于javascript - rails 形式 : change form fields from previously selected fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18961515/

相关文章:

javascript - 如何防止 'enter'键按下表单按钮

javascript - 模板无法使用 Backbone.js 加载

javascript - CSS - 从不同的浏览器返回不同的值

jquery - 在键 :value pair 的键中传递星号和数字

ruby-on-rails - 我编译的 gem 破坏了我的应用程序,使得所有模型都是未初始化的常量

javascript - iframe 使用 javascript 返回 - 避免主页返回

javascript - 动画运行时获取矩形的坐标

ruby-on-rails - 销毁前回调

javascript - Coveo 加载更多功能

ruby-on-rails - rails 服务器参数错误