gpt4 book ai didi

javascript - 第二个或嵌套的 event.PreventDefault() 不工作

转载 作者:行者123 更新时间:2023-11-30 20:32:35 26 4
gpt4 key购买 nike

我有这个 jquery 代码片段,如果我取消对第一个 preventDefault() 的注释,它会正常工作,但我试图调用第二个 preventDefault(),但它不会工作。见下文:

$(document).ready(function () {
$('#btnSubmit').click(function (event) {
if ($('#tracking').val() != "") {
// FIRST preventDefault()
//event.preventDefault();
var url = "/ReceivingLog/CheckTrackingNumber?number=" + $('#tracking').val();
$.get(url, null, function (result) {
if (result == "False") {
// SECOND preventDefault()
event.preventDefault();
}
});
}
});

为什么第二个/嵌套的 preventDefault 不起作用?如何让第二个 preventDefault() 起作用?

最佳答案

$.get 是异步的——当它的响应返回时,外线程已经完成,触发的事件已经正常完成。响应返回后,您必须再次触发事件:

const button = document.querySelector('button');
button.addEventListener('click', clickListener);

let doSubmit = false;
function clickListener(e) {
// If this was triggered by the `$.get`, return immediately, run the event as normal without interruption:
if (doSubmit) {
console.log('redirecting');
return;
}
e.preventDefault();
//$.get(url, ...
setTimeout(() => {
const success = true;
if (success) {
doSubmit = true;
button.click();
}
}, 500);
}
<form>
<button type="submit">click</button>
</form>

关于javascript - 第二个或嵌套的 event.PreventDefault() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com