更改所有下拉选项'选中复选框时的s值

时间:2017-10-04 01:24:24

标签: javascript jquery

我想知道当我选中复选框(全选)时,所有下拉菜单都可以强制选择" Y" 如果未经检查,所有下拉列表将被强制选择" N"

非常感谢。



var check = $('#check');

check.onclick(function(){
$('.option') = "Y";
})

<table id="table">
<th>
select all <input type="checkbox" id="check">
</th>
<tr>
<td>
<select class="option status">
<option>Y</option>
<option>N</option>
</select>
</td>
</tr>

<tr>
<td>
<select class="option status">
<option>Y</option>
<option>N</option>
</select>
</td>
</tr>
&#13;
&#13;
&#13;

我有一张表格,显示需要支付的总金额和拖欠付款

 $(document).ready(function() {

   $("#table").on('input', '.txtCal, .status', function() {
  calculate();
 });


  function calculate() {
  var calculated_total_sum = 0;
  var to_be_paid = 0;

   $("#table tr").each(function() {
   var get_textbox_value = $('.txtCal', this).val();
   var get_payment_status = $('.status', this).val();

    if (get_textbox_value && get_payment_status) {
    if ($.isNumeric(get_textbox_value)) {
      calculated_total_sum += parseFloat(get_textbox_value);
    }

    if (get_payment_status === 'N') {
      to_be_paid += parseFloat(get_textbox_value);
    }
  }
});
$(".total_sum_value").html(calculated_total_sum);
$(".arrears").html(to_be_paid);
 }

  calculate();

  });

HTML

<div class="col-lg-6 result">

<div class="input-group">
<p>
  <span class="input-group-addon">Total Payment</span>
  <span class="input-group-addon">$HKD</span>
  <span class="input-group-addon total_sum_value"></span></p>

  <br><br><br>
  <p>
  <span class="input-group-addon">In Arrears</span>
  <span class="input-group-addon">$HKD</span>
   <span  class="input-group-addon arrears"></span></p>


</div>

每个表格行都有一个选择下拉列表,其中包含两个选项&#34; Y&#34;和&#34; N&#34;。最初,我必须手动更改其表格行选项,拖欠付款将相应更改。 例如,如果下拉列表是&#34; Y&#34;这意味着已付款,拖欠的付款金额将自动减少。

现在添加了select all功能后,强制所有下拉菜单选择&#34; Y&#34;由于某种原因,计算功能无法正常工作。 任何想法

3 个答案:

答案 0 :(得分:1)

为所有selectoption的值添加公共类。在选中复选框时触发一个功能,该功能将选择所有Y选项。使用jquery&#39; prop&#39;添加属性的方法

&#13;
&#13;
function selectAll(elem) {
  if ($(elem).prop('checked')) {
    $('.selOptions option[value=Y]').prop('selected', true);
  } else {
    $('.selOptions option[value=N]').prop('selected', true);
  }


}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <th>
    select all <input type="checkbox" onchange="selectAll(this)">
  </th>
  <tr>
    <td>
      <select class="selOptions">
    <option value = "Y">Y</option>
    <option value = "N">N</option>
    </select>
    </td>
  </tr>

  <tr>
    <td>
      <select class="selOptions">
    <option value = "Y">Y</option>
    <option value = "N">N</option>
    </select>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用vainilla JS

<table>
    <th>
        select all <input id="selectAll" type="checkbox" />
    </th>
    <tr>
        <td>
            <select>
                <option>Y</option>
                <option>N</option>
            </select>
        </td>
    </tr>

    <tr>
        <td>
            <select>
                <option>Y</option>
                <option>N</option>
            </select>
        </td>
    </tr>
</table>


<script>
var selectAll = document.getElementById('selectAll');
var options = document.getElementsByTagName('select');

selectAll.addEventListener( 'change', function() {
    if(this.checked) {
        for(var i=0; i < options.length; i++) {
            options[i].selectedIndex = 0;
        }
    }
});
</script>

答案 2 :(得分:1)

  1. 首先确定何时选中复选框。
    • $('#check').on('change', function() { if ($(this).is(':checked')) {...
  2. 然后您可以使用基于option文字内容的选择器(您不具备value属性,但您应该使用$('option:contains(Y)')...属性。仍然有用。)

    • .prop()
  3. 然后使用selected方法以编程方式更改其.prop('selected', true);州。

    • $('#check').on('change', function() { if ($(this).is(':checked')) { $('option:contains(Y)').prop('selected', true); } else { $('option:contains(N)').prop('selected', true); } });
  4. 演示

    &#13;
    &#13;
    <table>
      <th>
        select all <input type="checkbox" id="check">
      </th>
      <tr>
        <td>
          <select class="option">
    <option>--</option>
    <option>Y</option>
    <option>N</option>
    </select>
        </td>
      </tr>
    
      <tr>
        <td>
          <select class="option">
    <option>--</option>
    <option>Y</option>
    <option>N</option>
    </select>
        </td>
      </tr>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    &#13;
    deep copy
    &#13;
    &#13;
    &#13;