这似乎是“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'未定义”并从已调用该事件的元素中获取值?
答案 0 :(得分:4)
使用this
而不是event
,因为this
将指向该函数,而target
实际上位于event
传递的对象中该函数的参数:
paymentTot = paymentTot + $(event.target).val();