jQuery更改事件不适用于Rails应用程序

时间:2017-05-21 02:24:23

标签: javascript jquery ruby-on-rails html5

jQuery的更改事件不适用于我的rails应用程序。我有一个选择,我希望输入根据我的选择值隐藏或显示。所以我有输入:

<div class="form-group">
    <%= f.label :tipopessoa, "Tipo de Pessoa:", class: "col-sm-2 control-label" %>
    <div class="col-sm-6">
      <%= f.select :tipopessoa, ['Jurídica', 'Física'], class: "form-control" %>
    </div>
  </div>
  <div class="form-group juridica">
    <%= f.label :cnpj, "CNPJ:", class: "col-sm-2 control-label" %>
    <div class="col-sm-6">
    <%= f.text_field :cnpj, class: "form-control" %>
  </div>
  </div>
  <div class="form-group fisica">
    <%= f.label :cpf, "CPF:", class: "col-sm-2 control-label " %>
    <div class="col-sm-6">
      <%= f.text_field :cpf, class: "form-control" %>
    </div>
  </div>
  <div class="form-group juridica">
    <%= f.label :razaosocial, "Razão Social:",class: "col-sm-2 control-label" %>
    <div class="col-sm-6">
    <%= f.text_field :razaosocial, class: "form-control" %>
  </div>
   </div>

拥有jQuery代码:

<script>
jQuery(function(){
  $(document).change(function(){
     if($('#cliente_pessoatipopessoa').val() == 'Jurídica') {
              $(".juridica").show();
              $(".fisica").hide();
          } else {
              $(".fisica").show();
              $(".juridica").hide();
          }
             });
});
</script>

因此,当我将选择更改为Física时,具有“Juridica”类的div消失,但任何其他更改都不再起作用。
我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

更改甚至应该与更改的select绑定。

JS Fiddle

$('select').change(function() { // Bind to the select
  if ($(this).val() == 'Jurídica') { // use $(this).val() to get the changed selects value
    $(".juridica").show();
    $(".fisica").hide();
  } else {
    $(".fisica").show();
    $(".juridica").hide();
  }
});

您可以通过执行以下操作来减少代码:

$('select').change(function(){ 
  var isEqual = $(this).val() == 'Jurídica';
  $(".juridica").toggle(isEqual); // Show if equal/ hide if not
  $(".fisica").toggle(!isEqual);  // Hide if equal/ show if not
});

JS Fiddle