在javascript中单击“确定”按钮之前,如何不执行任何操作
How to not do anything after until an OK button is clicked in javascript?
我有一个$.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);
});
小提琴
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval