不幸的是我无法创建一个jsFiddle,因为这需要一个返回HTML的有效URL,但关键是我正在使用输入掩码,它在执行$.load()
后停止工作
我认为我只是不太了解这个功能。
脚本:
(function () {
isa.uk.HpiLookup = (function () {
function HpiLookup() { }
HpiLookup.prototype.setupEventHandlers = function () {
return $('#hpiLookupContainer').on("click", "#vehicleRegistrationSearchButton", this.onVehicleRegistrationSearchButton);
};
HpiLookup.prototype.setupInputMasks = function () {
$('#VehicleRegistrationNumber').inputmask("#######", { "placeholder": "" });
};
HpiLookup.prototype.onVehicleRegistrationSearchButton = function (event) {
event.preventDefault();
return $('#hpiLookupContainer').load(
GetVehicleByRegistrationNumberUrl,
{
VehicleRegistrationNumber: $('#VehicleRegistrationNumber').val()
},
this.setupInputMasks);
};
return HpiLookup;
})();
}).call(this);
Index.cshtml:
<div id="hpiLookupContainer">
<input id="VehicleRegistrationNumber" type="text">
<button id="vehicleRegistrationSearchButton" type="button">Search</button>
</div>
<script type="text/javascript">
var GetVehicleByRegistrationNumberUrl = '@Url.Action("GetVehicleByRegistrationNumber", "Vehicle")';
var hpiLookup = new isa.uk.HpiLookup();
hpiLookup.setupEventHandlers();
hpiLookup.setupInputMasks();
</script>
我试图以这种方式使$ .load()回调setupInputMasks
,但事实并非如此。 如何在jQuery.load()
之后重新应用事件绑定?
答案 0 :(得分:0)
当你在当前函数中调用this.setupInputMasks);
时它是this
而不是一个类。 Yuo应该放置一些其他变量,即:self
并将this
放入。{/ p>
您的代码中的Explonation:
//...
HpiLookup.prototype.onVehicleRegistrationSearchButton = function (event) {
event.preventDefault();
var self = this; // Now You put this (from a class) into another variable
return $('#hpiLookupContainer').load(
GetVehicleByRegistrationNumberUrl,
{
VehicleRegistrationNumber: $('#VehicleRegistrationNumber').val()
},
function(){self.setupInputMasks}); // now You call class this
};
// ...
它帮助你。您还可以使用jQuery解决方案,函数代理。
答案 1 :(得分:0)
这是解决方案:
return $('#hpiLookupContainer').load(
GetVehicleByRegistrationNumberUrl,
{
VehicleRegistrationNumber: $('#VehicleRegistrationNumber').val()
},
hpiLookup.setupInputMasks
);