在javascript中单击“确定”按钮之前,如何不执行任何操作

How to not do anything after until an OK button is clicked in javascript?

本文关键字:何不 执行 操作 任何 按钮 javascript 单击 确定      更新时间:2023-09-26

我有一个$.ajax()函数,它请求具有字符串位置的内容。

假设 result.location = ajax 响应上的"某处",但理论上它可以是任何字符串。

成功(结果)时,它确实:

Line 1: alert("Hello There");
Line 2: alert("Look Here" + result.location); // Look here Somewhere

发生的情况是弹出"Hello There"的警报框,并且在用户关闭"Hello There"警报框之前不会显示"查看此处"警报框。

但是,如果对于第 1 行而不是警报,我有一个div 而不是显示的警报框,例如:

<div>Hello There <input type="button">OK</input></div>

所以相反,我有:

Line 1: showDivAlert();
Line 2: alert("Look Here" + result.location); // Look here Somewhere

然后发生的事情是div出现并弹出警报"看这里"。我可以在函数"showDivAlert()"中放入什么,以便在用户单击"确定"按钮之前不会执行showDivAlert()下面的任何代码?

注意:这里的键是保留 ajax 请求的结果.location 字符串

更改您的 HTML,以便您拥有:

<div>Hello There <input type="button" id="alert-ok">OK</input></div>

现在,您可以通过 #alert-ok ID 定位按钮。

如果你使用的是jQuery,只需附加一个事件:

showDivAlert();
$("#alert-ok").click(function() {
    //do work
});

不是在显示对话框的同一块中定义 post-OK 代码,而是在自定义对话框中按 OK 按钮的事件处理程序应触发任何其他行为。

像这样:

<div>Hello There <input type="button" onclick="okClicked()" value="OK"/></div>

function okClicked() {
    alert('Look Here');
}

JavaScript 中的alert()有效地阻止了执行线程,导致下一行代码在对话框关闭之前不会执行。

相反,您的showDivAlert();不会阻塞线程并继续正常执行。若要解决此问题,应向方法添加回调功能。

类似于 $.ajax() ,在服务器发出有效响应之前success不会被执行;您可以添加如下参数:

function showDivAlert(callbackOK_){
    //render a fancy popup with a #btn-ok
    $('#btn-ok').click(callbackOK_);//attach the callback passed
}

您在另一个答案中指出result.location"丢失" - 相反,它在回调函数的执行范围内根本不可用。

showDivAlert(function(){
    alert("Look Here" + result.location);
});  

小提琴