【问题标题】:How to enable certain fields on mutliselect drop down selection in rails form如何在rails表单中启用多选下拉选择中的某些字段
【发布时间】:2019-01-04 14:13:52
【问题描述】:

我有一个表单,它包含一个多选下拉列表。现在根据选择的下拉值,我想启用某些字段

这是我的表单视图

  <div class="field"> 9.
    <label> Types of Packaging Water Brand Sold : </label>
    <select class="form-control" id="type_of_brand" multiple="multiple" 
    name="user[type_of_brand][]">
      <option value="Bisleri">Bisleri</option>
      <option value="Aquafina">Aquafina</option>
      <option value="Kinley">Kinley</option>
      <option value="Bindu">Bindu</option>
      <option value="local">Local</option>
      <option value="others">Others</option>
    </select>
  </div><br/>

  <div class="field"> 
    <div id="Bisleri" class ="hidden">
      <label> Cost of Bisleri : </label>
      <input type="number" name="users[cost][Bisleri][half_litre]"> 
      Half litres: </input>
      <input type="number" name="users[cost][Bisleri][half_litre]"> 1 
      litres: <input>
      <input type="number" name="users[cost][Bisleri][half_litre]"> 2 
      litres: <input>
    </div>
    <div id="Aquafina" class ="hidden">
      <label> Cost of Aquafina : </label>
      <input type="number" name="users[cost][Aquafina][half_litre]"> 
      Half litres: </input>
      <input type="number" name="users[cost][Aquafina][half_litre]"> 1 
      litres: <input>
      <input type="number" name="users[cost][Aquafina][half_litre]"> 2 
      litres: <input>
    </div>
    <div id="Kinley" class ="hidden">
      <label> Cost of Bisleri : </label>
      <input type="number" name="users[cost][Kinley][half_litre]"> Half 
      litres: </input>
      <input type="number" name="users[cost][Kinley][half_litre]"> 1 
      litres: <input>
      <input type="number" name="users[cost][Kinley][half_litre]"> 2 
      litres: <input>
    </div>
    <div id="Bindu" class ="hidden">
      <label> Cost of Bisleri : </label>
      <input type="number" name="users[cost][Bindu][half_litre]"> Half 
      litres: </input>
      <input type="number" name="users[cost][Bindu][half_litre]"> 1 
     litres: <input>
      <input type="number" name="users[cost][Bindu][half_litre]"> 2 
    litres: <input>
     </div>
    <div id="local" class ="hidden">
      <label> Cost of Bisleri : </label>
      <input type="number" name="users[cost][local][half_litre]"> Half 
      litres: </input>
      <input type="number" name="users[cost][local][half_litre]"> 1 
      litres: <input>
      <input type="number" name="users[cost][local][half_litre]"> 2 
    litres: <input>
    </div>
    <div id="others" class ="hidden">
      <label> Cost of Bisleri : </label>
      <input type="number" name="users[cost][others][half_litre]"> Half 
      litres: </input>
      <input type="number" name="users[cost][others][half_litre]"> 1 
      litres: <input>
       <input type="number" name="users[cost][others][half_litre]"> 2 
      litres: <input>
    </div>
  </div>

这里的 type_of_brand id 字段是一个多选,根据选择的值,我想启用隐藏字段

所以我写了我的javascript如下:

 <script type="text/javascript">
   $(function() {
   $("#type_of_brand").on("change", function() {
   var select_val = $(this).val();
   console.log(select_val);
   var data = "#" + select_val"
    $(data).removeClass("hidden");
  });
  });
</script>

但它似乎并没有做任何事情。这里的问题是,它只启用一个字段,以先选择者为准

任何帮助!

【问题讨论】:

    标签: javascript html ruby-on-rails


    【解决方案1】:

    问题是$(this).val() 为多个选择返回一个选定值数组,因此您需要对其进行迭代。

    $(function() {
      $("#type_of_brand").on("change", function() {
        var selected_values = $(this).val();
    
        // add hidden to divs
        $(".field > div").addClass("hidden");
    
        // remove hidden from selected divs
        selected_values.forEach(function(val) {
          var id = "#" + val;
          $(id).removeClass("hidden");
        });
      });
    });
    .hidden {
      display: none;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="field"> 9.
      <label> Types of Packaging Water Brand Sold : </label>
      <select class="form-control" id="type_of_brand" multiple="multiple" name="user[type_of_brand][]">
        <option value="Bisleri">Bisleri</option>
        <option value="Aquafina">Aquafina</option>
        <option value="Kinley">Kinley</option>
        <option value="Bindu">Bindu</option>
        <option value="local">Local</option>
        <option value="others">Others</option>
      </select>
    </div><br/>
    
    <div class="field">
      <div id="Bisleri" class="hidden">
        <label> Cost of Bisleri : </label>
        <input type="number" name="users[cost][Bisleri][half_litre]"> Half litres: </input>
        <input type="number" name="users[cost][Bisleri][half_litre]"> 1 litres: <input>
        <input type="number" name="users[cost][Bisleri][half_litre]"> 2 litres: <input>
      </div>
      <div id="Aquafina" class="hidden">
        <label> Cost of Aquafina : </label>
        <input type="number" name="users[cost][Aquafina][half_litre]"> Half litres: </input>
        <input type="number" name="users[cost][Aquafina][half_litre]"> 1 litres: <input>
        <input type="number" name="users[cost][Aquafina][half_litre]"> 2 litres: <input>
      </div>
      <div id="Kinley" class="hidden">
        <label> Cost of Kinley : </label>
        <input type="number" name="users[cost][Kinley][half_litre]"> Half litres: </input>
        <input type="number" name="users[cost][Kinley][half_litre]"> 1 litres: <input>
        <input type="number" name="users[cost][Kinley][half_litre]"> 2 litres: <input>
      </div>
      <div id="Bindu" class="hidden">
        <label> Cost of Bindu : </label>
        <input type="number" name="users[cost][Bindu][half_litre]"> Half litres: </input>
        <input type="number" name="users[cost][Bindu][half_litre]"> 1 litres: <input>
        <input type="number" name="users[cost][Bindu][half_litre]"> 2 litres: <input>
      </div>
      <div id="local" class="hidden">
        <label> Cost of Local : </label>
        <input type="number" name="users[cost][local][half_litre]"> Half litres: </input>
        <input type="number" name="users[cost][local][half_litre]"> 1 litres: <input>
        <input type="number" name="users[cost][local][half_litre]"> 2 litres: <input>
      </div>
      <div id="others" class="hidden">
        <label> Cost of Others : </label>
        <input type="number" name="users[cost][others][half_litre]"> Half litres: </input>
        <input type="number" name="users[cost][others][half_litre]"> 1 litres: <input>
        <input type="number" name="users[cost][others][half_litre]"> 2 litres: <input>
      </div>
    </div>

    【讨论】:

    • 如果用户选择一个选项并取消选择该选项,该特定字段是否也会在取消选择时隐藏?
    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2021-03-24
    • 2013-04-24
    相关资源
    最近更新 更多