-1

私はリストを繰り返し、その値をテキストボックスに表示しています。名前checkquantity&を持つ 2 つのテキストボックスがありquantity、その値はリストから反復しています。

割り当てられた数量よりも多くの数量値を入力する場合、ユーザーは数量値を入力する必要があります。次に、送信ボタンを無効にする必要があります。

これは私の問題です: 私の以下のコードから、送信ボタンは初めて無効になります。つまり、初めて無効な値を入力すると、コードは正常に機能しますが、別のテキスト ボックスに有効な値を再度入力すると、ボタンが有効になります。ただし、最初のテキストボックスに無効な値が入力されているため、有効にしないでください。

注:ユーザーはテキストボックス名にのみ値を入力できquantity、このテキストボックスはテキストボックスから検証されcheckquantityます。

以下のコードを確認して、これに対する解決策を提案してください。

$('input[name="quantity"]').keyup(function() {
    var $tr = $(this).closest("tr");
    var q = +$tr.find('input[name^="quantity"]').val();
    var cq = +$tr.find('input[name^="checkquantity"]').val();

    if (q > cq) {
        $('#submtbtnId').attr('disabled', 'disabled');
    }
    else {
        $('#submtbtnId').removeAttr('disabled');
    }
});
----------------------------------- in
while loop my list is iterating 
{ 
  <tr> 
    <td width = "10%"> 
      <input type = "text" name = "quantity"values = "" id = "quantity" / >   
      <input type = "text" name = "checkquantity" disable = "disable"
          values = "random values coming from my list   
                 eg. 5 or 9 ..." / > < /td>   
  </tr >
}

------------------------- 
 < input type = "submit" id = "submtbtnId" / >​
4

1 に答える 1

0

その場合は、keyupイベントで毎回、すべてのテキストボックスを繰り返しチェックしてください。

アップデート

問題はvaluesという名前の属性にあるようです。を使用して値にアクセスしようとしている場合.val()、それはvalueであると想定されます

return false;条件が失敗したときにループから抜け出すように条件を追加しました。

次に、もう1つ問題がありました。入力が空であるとしましょう。したがって、それを数値に変換すると、0になり、比較は常に失敗します。

だから私はフィールドが空でない場合のチェック条件を追加しました、そしてそれから数に変換します

$('input[name="quantity"]').on('keyup', function() {
    var check = false;
    $('tbody tr').each(function() {
        var $tr = $(this);
        var q = $tr.find('input[name^="quantity"]').val();
        if(q != ''){
            q = +q;
        }
        var cq = +$tr.find('input[name^="checkquantity"]').val();
        if (q !== '' && q > cq) {
            check = true;
            return false;
        }
    });

    if (check) {
        $('#submtbtnId').prop('disabled', true);
    }
    else {
        $('#submtbtnId').removeAttr('disabled');
    }
});​

フィドルをチェック

于 2012-11-27T16:49:37.653 に答える