Javascript Rails 4:如何在Rails中使用JQuery禁用基于复选框值的文本字段

Javascript Rails 4:如何在Rails中使用JQuery禁用基于复选框值的文本字段,javascript,jquery,ruby-on-rails,coffeescript,simple-form,Javascript,Jquery,Ruby On Rails,Coffeescript,Simple Form,我在表单中有一个复选框和一个文本字段。如果选中该复选框,我希望禁用该字段(如果未选中,我希望启用该字段) 我试图根据这个问题的第二个答案编写一些jQuery: 但是,文本字段is(foo_price)在页面加载时被禁用,即使该字段未选中。我做错了什么 我正在使用: 问题产生于这样一个事实:在DOM上使用enable_cb()时,直接加载属性checkedits引用窗口对象,而不是checkbox元素 我建议使用change事件而不是click来检查checked属性。您应该使用.trigger

我在表单中有一个复选框和一个文本字段。如果选中该复选框,我希望禁用该字段(如果未选中,我希望启用该字段)

我试图根据这个问题的第二个答案编写一些jQuery:

但是,文本字段is(foo_price)在页面加载时被禁用,即使该字段未选中。我做错了什么

我正在使用:


问题产生于这样一个事实:在DOM上使用
enable_cb()
时,直接加载属性
checked
its引用窗口对象,而不是checkbox元素

我建议使用
change
事件而不是
click
来检查
checked
属性。您应该使用
.trigger(event)
以编程方式执行事件处理程序

enable_cb = ->
  $('#foo_price').prop 'disabled', !@checked
  return

$ ->
    $('#foo_free_flag').change enable_cb 
    .trigger('change')
    return

您可以使用javascript/jquery来实现这一点


$(函数(){
$(“.radio1”).change(函数(){
警报($(“.radio1”).prop(“已检查”);
if($(“.radio1”).prop(“选中”)==true){
$(“.txt1”).prop(“已禁用”,true);
}否则{
$(“.txt1”).prop(“禁用”,false);
}
});
});

谢谢Satpal。当我尝试这个代码时,它的行为是相同的。无论是否选中该复选框,文本字段都将被禁用。@YellowReval,是否动态加载内容?对不起,您的意思是表单是否更改?我使用RubyonRails Simple_Form gem创建forms.Hmmm。我看到它在JS Fiddle上工作,但出于某种原因,这对我也不起作用。
<form>
  <input class="boolean optional" type="checkbox" value="1" name="foo[free_flag]" id="foo_free_flag" />
  <input class="numeric decimal optional" type="number" step="any" value="12.99" name="foo[price]" id="foo_price" />
</form>
enable_cb = ->
  $('#foo_price').prop 'disabled', !@checked
  return

  $ ->
    enable_cb()
    $('#foo_free_flag').click enable_cb
    return
enable_cb = ->
  $('#foo_price').prop 'disabled', !@checked
  return

$ ->
    $('#foo_free_flag').change enable_cb 
    .trigger('change')
    return
<input type = "text" class="txt1"/>
<input type="radio" class="radio1"/>

$(function(){
$(".radio1").change(function(){
alert($(".radio1").prop("checked"));
if($(".radio1").prop("checked") == true){
  $(".txt1").prop("disabled", true);
}else{
    $(".txt1").prop("disabled", false);
}
});
});