我正在迭代一个列表,并在文本框中显示它的值。
有两个名称为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" / >
答案 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 强>