【发布时间】:2019-12-10 09:46:28
【问题描述】:
我正在使用淘汰赛和 .net 并且有以下 html
<a href="javascript:void(0)" data-bind="click: CalculateAge">Calculate</a>
然后在我的打字稿模块中,我正在调用函数CalculateAge,如下所示
CalculateAge= (data: any, event: Event) => {
$('body').on('click', '#MyButton', () => { validateAge(); });
let inputHtml = "<input type = 'text' style= 'width: 300px' id = 'inputHtml' value = '" + receiverEmail + "'></input>";
let myButton =
"<button id='myButton'>Calc</button>";
let alert: any = {
title: 'Please calculate',
html: "<table>" +
"<tr>" +
"<td><label>Age</label></td> " +
"<td style= 'padding-right: 5px'>" + inputHtml + "</td><td>" + myButton + "</td>" +
"</tr>" +
"</table>",
type: "warning",
showCancelButton: true,
showConfirmButton: false,
cancelButtonText: "Cancel"
};
swal(alert);
let options_warning: any = {
title: 'Error',
type: "warning",
confirmButtonColor: "#DD6B55",
confirmButtonText: "ReEnter",
};
let options_success: any = {
title: "Sent",
type: "success",
confirmButtonText: "Ok",
}
let options: any;
function validateAge() {
var age = (<HTMLInputElement>document.getElementById('inputHtml')).value;
if (!age || age == "") {
options_warning.title = "Age please fill";
options = options_warning;
}
else {
options = options_success;
}
swal(options).then(() => {
if (options.type == "warning") {
swal(alert);
}
else {
$.post('MyApi/MyController/CalcualteAge',
{ "Age": age }
);
}
});
}
};
我点击打开甜蜜警报弹出窗口的href,然后输入年龄并点击名为myButton的按钮。这将检查年龄是否已填充,然后进行 ajax 调用以计算年龄。我不在乎 webapi 是否失败。
当我点击 myButton 时一切正常,它只调用一次 ajax。
但是当我点击href打开弹出窗口并点击myButton然后它抛出错误Cannot read property 'value' of null
并且错误在线
var age = (<HTMLInputElement>document.getElementById('inputHtml')).value;
它使 ajax 调用两次。我认为 myButton
的绑定有问题有人知道怎么解决吗?
【问题讨论】:
-
尝试将 validateAge 函数移到 calculateAge 函数之外。我相信它会立即被调用,然后在
$('body').onclick函数上再次调用它 -
@Robert 如果我只是将函数 ValidateAge 移到 CalculateAge 之外,那么它会引发语法错误
-
您还需要将您的
options_warning、options_success和options变量声明移动到 validateAge 函数中。此外,您拥有的函数声明:function validateAge() { .... }需要更改为validateAge() { .... }这应该可以解决您的语法错误。我会把它放在一个答案中,这样你就可以看到代码。希望能修复双 ajax 调用
标签: javascript ajax asp.net-mvc knockout.js sweetalert2