-1

我正在迭代一个列表,并在文本框中显示它的值。有两个带有名称checkquantity&的文本框,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;条件以确保它在条件失败时退出循环。

其次还有一个问题..假设输入为空..所以当您将其转换为数字时,它是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 回答