我有一个包含像 -
这样的文本框的部分剃刀视图@Html.EditorFor(x => x.UnitsBought, new { @onchange = "script.updateUnitPrice(this);" } )
从主视图调用它,脚本被引用为 -
$(document).ready(function () {
let script = new UnitAllocationMaintScript();
script.initialize();
脚本位于不同的JS文件中,如 -
var UnitAllocationMaintScript = (function ($, app) {
"use strict";
var updateUnitPrice = function (element) {
....
}
但是当我更改UnitsBought文本框时,错误就像 -
脚本未定义。
我该怎么称呼这个功能。
答案 0 :(得分:0)
使用不显眼的事件处理程序。换句话说,请勿使用onchange
等HTML属性,而应使用:
$('#UnitsBought').on('change', function () {
...
});
答案 1 :(得分:0)
script
在$(document).ready()
处理程序函数中定义,因此超出了在onchange
下运行的window
属性的范围。
要解决此问题,您可以使用不显眼的JS而不是过时的on*
属性来附加事件处理程序。试试这个:
@Html.EditorFor(x => x.UnitsBought, new { @class = "units-bought" } )
$(document).ready(function () {
let script = new UnitAllocationMaintScript();
script.initialize();
$('.units-bought').change(function() {
script.updateUnitPrice(this);
});
});