我正在尝试使用jQuery来比较html表中的两个值,并在数量>时提醒用户。库存。
我想在当前行中选择值:
$('.item_quantity').change(function(){
var $this=$(this);
var quantity=$this.val();
// var inventory=$this.next('.item_inventory, td').text();
var inventory=$(this).next('td, .item_inventory').text();
console.log('quantity: ', quantity, 'inventory: ', inventory);
if (quantity > inventory) {
alert('Your order quantity ' + quantity + ' is greater than ' + inventory + ' inventory');
}
});
});
<table >
<tr>
<td><form method=""><input class="item_quantity" type="text" data-prodid="249" value=""/></form></td>
<td class="item_inventory">10</td>
<td>Product 1</td>
</tr>
<tr>
<td><form method=""><input class="item_quantity" type="text" data-prodid="2" value=""/></form></td>
<td class="item_inventory">7</td>
<td>Product 2</td>
</tr>
</table>
答案 0 :(得分:3)
var $this=$(this);
var quantity=$this.val();
到
var quantity = parseInt($(this).val());
$this
即可访问.val()
,var inventory=$(this).next('td, .item_inventory').text();
到
var inventory = parseInt( $(this).closest('tr').find('.item_inventory').html());
.item_inventory
不是您.item_quantity
字段的直接兄弟,因此next()
将无法检索DOM元素。考虑找到两个元素的父元素,然后使用find()
获取元素。两个字符串比较的结果不是你需要的:字符串比较将逐个比较两个字符串的每个字符,最后确定比较的结果。
示例:
如果比较 '10'和'8',那么当它比较两个字符串时,它将比较它们将比较'1' 和'8',然后'0'和坚果。
此时,'1'将比'8'更接近字母表的开头,然后您的测试将返回false,无论以下字符如何是
有关详细信息,请参阅this article。