使用jquery禁用提交按钮时出现问题

时间:2012-11-27 16:32:56

标签: javascript jquery

我正在迭代一个列表,并在文本框中显示它的值。 有两个名称为checkquantity&的文本框quantity我的值从列表中迭代。

现在,如果用户输入的数量超过分配的数量,则必须输入数量值。然后我必须禁用提交按钮。

这是我的问题: 从我的下面的代码,提交按钮仅第一次diasabling。即如果我第一次输入无效值,那么我的代码工作正常,但如果我再次在另一个文本框中输入有效值,则我的按钮启用。但它不应启用,因为在第一个文本框中输入了无效值。

注意:用户只能在文本框名称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" / >​

1 个答案:

答案 0 :(得分:0)

如果是这种情况,每次在keyup事件中都会通过迭代检查所有文本框..

<强>更新

看起来问题在于名为的属性。 如果您尝试使用.val()访问该值,则该值应为

添加了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');
    }
});​

<强> Check Fiddle