Rails表单:从以前选择的字段更改表单字段

我有两个这样的simple_form字段

  

我想仅在用户为第一个字段选择“是”时才显示第二个字段。 我的Jquery:

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

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

生成的HTML:

 

但是动态字段不起作用。 这有什么不对?

或建议任何更好的方法来实现这一目标。

首先,你不能将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") })();