Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中单击OK按钮之前,如何不执行任何操作?_Javascript - Fatal编程技术网

在javascript中单击OK按钮之前,如何不执行任何操作?

在javascript中单击OK按钮之前,如何不执行任何操作?,javascript,Javascript,我有一个$.ajax()函数,它请求具有字符串位置的内容 假设ajax响应上的result.location=“某处”,但理论上它可以是任何字符串 成功(结果)时,它会: 出现的情况是弹出一个“Hello There”警报框,“Look here”警报框直到用户关闭“Hello There”警报框后才会显示 但是,如果对于第1行而不是警报,我有一个div而不是警报框,例如: <div>Hello There <input type="button">OK</inpu

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

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

成功(结果)时,它会:

出现的情况是弹出一个“Hello There”警报框,“Look here”警报框直到用户关闭“Hello There”警报框后才会显示

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

<div>Hello There <input type="button">OK</input></div>
然后,div出现了,警报“Look Here”弹出。我可以在函数“showDivAlert()”中添加什么,以便在用户单击“确定”按钮之前,showDivAlert()下面的任何代码都不会执行


注意:这里的关键是保留ajax请求的result.location字符串,而不是在显示对话框的同一块中定义post OK代码,在自定义对话框中按OK按钮的事件处理程序应该触发任何其他行为

大概是这样的:

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

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

大概是这样的:

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

更改您的HTML,以便:

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

更改您的HTML,以便:

<div>Hello There <input type="button" id="alert-ok">OK</input></div>
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
已“丢失”-相反,它在回调函数的执行范围内根本不可用

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
已“丢失”-相反,它在回调函数的执行范围内根本不可用


您当前在上面发布的内容的问题是结果。这样做会丢失位置。您当前在上面发布的内容的问题是结果。这样做会丢失位置。您当前在上面发布的内容的问题是结果。这样做会丢失位置。如果您在ajax请求的回调中有它,它不会丢失的。您可以在本地引用result,因为这是一个闭包。您当前在上面发布的内容的问题是result.location会因此丢失。如果您在ajax请求的回调中有result.location,则不会丢失它。您可以在本地参考结果,因为这是一个闭包。只要值持续存在,就可能不需要保留对
结果的引用。也就是说,它可以作为字符串参数传递给
showDivAlert
回调:保留对
结果的引用。只要值持续存在,就可能不需要位置,也就是说,它可以是作为字符串参数传递给
showDivAlert
回调:
function showDivAlert(callbackOK_){
    //render a fancy popup with a #btn-ok
    $('#btn-ok').click(callbackOK_);//attach the callback passed
}
showDivAlert(function(){
    alert("Look Here" + result.location);
});