javascript - 为什么 "$(this.target).val()"(引用输入元素)的值是 "undefined"?

标签 javascript jquery meteor

这似乎是“第 22 条军规”的情况。

我已经为几个输入元素分配了“付款”类,如下所示:

<input class="payments" type="number" step="0.01" min="0" id="airfare" />

我正在响应这些元素的更改事件:

Template.templatizer.events({
      'change .payments' : function(event){
         var paymentTot = $('#paymenttotal').val();
         paymentTot = paymentTot + $(this).val();
         $('#paymenttotal').val(paymentTot);
      }
  });

...但是使用上面的代码,在将值输入到“付款”类的元素之一并模糊/退出后,我得到“未捕获的类型错误:无法读取未定义的属性“toLowerCase”。 ”,显然是因为我需要将“.target”附加到元素,如 lenybernard 的回答 here 中所述。 .

但是这样做之后,将代码更改为:

paymentTot = paymentTot + $(this.target).val();

...虽然这确实解决了“无法读取未定义的属性'toLowerCase'”问题,但我在此行之后得到“Undefined”作为 paymentTot 的值运行(之前是“”):

paymentTot = paymentTot + $(this.target).val();

如何避免“无法读取未定义的属性‘toLowerCase’”并从调用该事件的元素中获取值?

最佳答案

使用 event 而不是 this,因为 this 将指向函数,并且 target实际上是在通过参数传递给该函数的 event 对象中:

paymentTot = paymentTot + $(event.target).val();

关于javascript - 为什么 "$(this.target).val()"(引用输入元素)的值是 "undefined"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32315753/

相关文章:

javascript - 过滤范围之间的数据

javascript - 将下拉菜单放置在菜单标题的正下方

Angular-Meteor 更新到 1.6.1.1 typescript 编译器缺少声明

javascript - 堆中的本地对象和工厂模式

javascript - 无法从完整日历事件对象转换为正确格式的日期和时间

javascript - 尝试向字符串添加值,并且每次都会不断添加 1

javascript - meteor 模板遍历数组

php - javascript长度持续时间

javascript - jQuery DataTables 重新加载间隔错误

javascript - 无法读取未定义的属性 'helpers'