为什么“$(this.target).val()”(引用输入元素)的值是“未定义的”?

时间:2015-08-31 16:26:05

标签: javascript jquery meteor

这似乎是“Catch-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);
      }
  });

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

但在这之后,将代码更改为:

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

...当 解决“无法读取属性'toLowerCase'未定义”问题时,我将“未定义”作为此行之后的paymentTot值运行(之前是“”):

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

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

1 个答案:

答案 0 :(得分:4)

使用this而不是event,因为this将指向该函数,而target实际上位于event传递的对象中该函数的参数:

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