【问题标题】:getting a weird jquery error that i cant figure it out得到一个奇怪的 jquery 错误,我无法弄清楚
【发布时间】:2016-09-26 16:29:45
【问题描述】:

我正在尝试在用户输入金额时运行事件并且我收到此错误

未捕获的类型错误:无法读取未定义的属性“toLowerCase”

HTML

<input type="text" id="ItemQuantity#i#" name="ItemQuantity#i#" onkeypress="return isNumeric(event)" onkeydown="return keyispressed(event);" onchange="autototal()">

试图专注于 onchange="autototal()"

jQuery

function autototal(){
  var sum = 0;
  var quantity = 0;
  var price = 0;
  var totalPrice = 0;
  quantity = $(this).val();
  price = $(this).closest('.col-price').find('input').val();

  console.log(quantity);
  console.log(price); 
}

【问题讨论】:

  • 您没有在代码中的任何地方使用toLowerCase...
  • 这就是你的全部代码吗?
  • 是的,与此错误有关,正确没有意义
  • @AndrewL.: OP 不是,不是,但是当this 指代window 时,jQuery 在处理$(this).val() 时确实在幕后。

标签: javascript jquery html


【解决方案1】:

您调用处理程序的方式,this 不是元素,而是window

要么使用 jQuery 连接处理程序,这将确保 this 引用元素:

$("[id='ItemQuantity#i#']").on("change", autototal);

...或者如果您真的想使用onxyz-attribute-style 事件处理,请执行以下操作:

<input ... onchange="autototal.call(this)">

它应该按原样工作,或者这样做:

onchange="autototal(this)"

...并更新autototal 以使用参数而不是this

【讨论】:

  • 这部分在jQuery内部抛出错误elem.nodeName.toLowerCase(),其中elem指的是window,因为你提到的原因
  • @Maximus:使用 OP 的代码,是的;不是上面的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多