Javascript 文本框的增量控件
我有一些代码,添加了两个按钮来增加和减少文本框的数量,效果很好。我正在尝试扩展该代码以处理多个文本框。不幸的是,文本框的名称会因页面而异,因此我使用了一个由所有文本框共享的类名,并尝试递增距离每个递增按钮最近的文本框,但文本框的值为NaN 奇怪的是,它没有产生任何错误。NaN来自console.log行 如果有人能给我指出正确的方向,我会非常感激 单个实例(工作): 多个实例(不太多…):Javascript 文本框的增量控件,javascript,jquery,css,Javascript,Jquery,Css,我有一些代码,添加了两个按钮来增加和减少文本框的数量,效果很好。我正在尝试扩展该代码以处理多个文本框。不幸的是,文本框的名称会因页面而异,因此我使用了一个由所有文本框共享的类名,并尝试递增距离每个递增按钮最近的文本框,但文本框的值为NaN 奇怪的是,它没有产生任何错误。NaN来自console.log行 如果有人能给我指出正确的方向,我会非常感激 单个实例(工作): 多个实例(不太多…): 首先像这样绑定事件处理程序:jQuery('.increase')。单击(increaseQty) 您应该
首先像这样绑定事件处理程序:
jQuery('.increase')。单击(increaseQty)代码>
您应该使用this
关键字仅获取按钮附近的文本框。
然后尝试以下代码:
function increaseQty(e) {
var tb = jQuery(this).closest('input');
tb.val(parseInt(tb.val()) + 1);
}
closest()
函数搜索与选择器匹配的最近父元素。需要在其中使用this
或e.target
,以便只对单击的项目进行操作jQuery('.qty')
选择所有数量字段,而不仅仅是单击的字段。我永远都不明白为什么jQuery初学者觉得这很难实现。这本身是行不通的,他需要改变绑定事件的方式。他没有使用适当的上下文调用increaseQty
。它应该是jQuery('.increase')。单击(increaseQty)
ok,我按照您的建议更新了代码:jQuery('.increase')。单击(increaseQty)
函数increaseQty(e){var tb=jQuery(this).closest('.qty');tb.val(parseInt(tb.val())+1);}
但是我没有得到任何值或错误,所以我添加了控制台.log(“tb.val=“+tb.val”)代码>并输出以下内容:tb.val=function(a){var b,c,d,e=this[0];…(续)
Hmmm…注释中的格式有一些问题,但如果您查看代码笔,它就在那里:@Realto619它应该是console.log(“tb.val=“+tb.val());
。如果您记录tb.val
,它将为您提供.val()
函数的定义。您必须执行函数调用tb.val()
。
function increaseQty(e) {
var tb = jQuery(this).closest('input');
tb.val(parseInt(tb.val()) + 1);
}