将JS函数绑定到razor文件中另一个脚本文件中的复选框

时间:2017-07-03 14:46:40

标签: javascript jquery asp.net-mvc razor onchange

我有一个包含像 -

这样的文本框的部分剃刀视图
@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文本框时,错误就像 -

脚本未定义。

我该怎么称呼这个功能。

2 个答案:

答案 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);
  });
});