0

5 つの入力と 1 つのドロップダウンの最後にチェックボックスがあります。jquery を使用して、チェックボックスの前のすべての入力とドロップダウンを 0 に設定しようとしています。

多くの従業員がリストされるため、チェックボックスの前にある従業員のみにする必要があります。

jqueryでの私の弱い試み。ajaxを介して呼び出されることがあるので、.onがあります

$(document).ready(function () {

    $(document).on('click', '.fasCheck', function(){

    if ($(this).attr("checked") == "checked"){
        $(this).prev().parent().prev(".payWeek").next('input').prop('checked', true);;
    } else {

    }
    });     

});

html:

<div class="returns" id="employee">
<h3>David Wilson</h3>
<div class="payWeek">
        <label for="MonthlyReturn0PayWeek1">Pay Week1</label>
        <input type="number" id="MonthlyReturn0PayWeek1" value="" maxlength="12" step="any" name="data[MonthlyReturn][0][pay_week1]">
    </div>
   <div class="payWeek">
        <label for="MonthlyReturn0PayWeek2">Pay Week2</label>
        <input type="number" id="MonthlyReturn0PayWeek2" value="" maxlength="12" step="any" name="data[MonthlyReturn][0][pay_week2]">
   </div>
   <div class="payWeek">
        <label for="MonthlyReturn0PayWeek3">Pay Week3</label>
        <input type="number" id="MonthlyReturn0PayWeek3" value="" maxlength="12" step="any" name="data[MonthlyReturn][0][pay_week3]">
   </div>
   <div class="payWeek">
        <label for="MonthlyReturn0PayWeek4">Pay Week4</label>
        <input type="number" id="MonthlyReturn0PayWeek4" value="" maxlength="12" step="any" name="data[MonthlyReturn][0][pay_week4]">
    </div>
    <div class="payWeek">
         <label for="MonthlyReturn0PayWeek5">Pay Week5</label>
         <input type="number" id="MonthlyReturn0PayWeek5" value="" maxlength="12" step="any" name="data[MonthlyReturn][0][pay_week5]">
     </div>
     <div class="payWeek">
          <label for="MonthlyReturn0PayWeeks">Pay Weeks</label>
          <select id="MonthlyReturn0PayWeeks" name="data[MonthlyReturn][0][pay_weeks]">
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option selected="selected" value="4">4</option>
                <option value="5">5</option>
           </select>
      </div>                        
      <div class="payWeek">
           <label for="FAS">FAS</label>
           <input type="checkbox" class="fasCheck" name="FAS">
      </div>
</div>
4

3 に答える 3

1
  • $(this).attr("checked") == "checked"動作しません。使用することは既にわかっています.prop()。またはthis.cecked、jQuery なしで使用します。
  • .prev().parent()-これprevは絶対に不要です。すべての兄弟は同じ親ノードを持っています。
  • .prev(".payWeek").prevAll()-代わりに使用したいようです。
  • .next('input')- 次の兄弟ではなく、子孫を見つけたい。.children()またはを使用し.find()ます。
  • .prop('checked')-チェックボックスに適していますが、ここには数値入力がありvalue、経由でそれらを設定する必要があり.val()ます。

だからそれを

$(document).ready(function() {
    $(document).on('click', '.fasCheck', function() {
        if (this.checked) {
            $(this)
              .parent()
              .prevAll(".payWeek")
              .find('input')
              .val('0');
        }
    });     
});
于 2013-02-19T16:43:26.583 に答える
1

クリックしたチェックボックスから、最も近い を見つけてから、payWeek以前payWeeksのすべての を選択し、それらの中のすべての入力を見つけてpayWeeks、値をゼロに設定します。

$(document).ready(function () {
    $(document).on('click', '.fasCheck', function(){
        if ( this.checked ) {
            $(this).closest('.payWeek')
                   .prevAll('.payWeek')
                   .find('input')
                   .val('0');
        } else {

        }
    });     
});
于 2013-02-19T16:44:03.463 に答える
1
$(document).on('click', '.fasCheck', function(){

    var $this = $(this),
        $parent = $(this).parents('.returns').eq(0),
        $inputs = $parent.find('input');

    if ($this.prop("checked")){
        $inputs.val('0');
    } 
});
于 2013-02-19T16:45:20.890 に答える