我想在调用$('#dialog')之后暂停下面的javascript代码。dialog('open');直到用户响应此对话框。我使用了while循环,但它停止了所有的javascript。我只是想暂停这个功能。有任何想法吗?
注意:我不想将我的代码分成两个函数。我只想暂停javascript,直到用户输入一些值,如提示
function sendSubComment(button){
form = button.parentNode
nodes= form.elements;
cmt = $(nodes.item(0)).val();
cmt = cmt.replace(/\n/g,"<br>");
title = $(nodes.item(1)).val();
for(i=0;i < nodes.length;i++){
nodes.item(i).disabled = 'true';
}
c = form.parentNode.parentNode;
if(checkUserLogin() == false){
$('#dialog').dialog('open');
//pause starts here
//return the values of user
//resume javascript
}
document.title = c.id;
$.post('index/phplibrary/action.php',{cmd:'insert_comment',cmt:cmt,title:title,id_topic:<?php echo $GLOBALS['id_topic']; ?>,id_parentComment:c.id,subcomment:'1'},function(result){
$.post('ajax/comments.php?cmd=get_subcomment&id_subcomment='+result,function(res){
extendMakeComment(form);
node = c.childNodes[3];
document.title = node.className;
t = document.createElement("DIV");
t.innerHTML = res;
t = t.childNodes[0];
$(t).hide();
node.appendChild(t);
$(t).show("slow");
form.reset();
for(i=0;i < nodes.length;i++){
nodes.item(i).disabled = '';
}
});
});
}
此代码是我创建对话框的方式
$('#dialog').dialog({
autoOpen: false,
width: 600,
buttons: {
"Ok": function() {
$(this).dialog("close");
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
答案 0 :(得分:3)
如果你想在等待用户的回复时“暂停”执行javascript,那么你的方法是错误的。
您应该在用户请求时打开对话框(单击按钮,或在页面加载等)。然后,当用户填写对话框中的信息并提交它时,让它调用另一个javascript操作来处理该数据。
下面的一些伪代码:
页面加载:
$(".DialogBox").show();
单击DialogBox OK按钮时
$(".DialogBox input[type=submit]").click(function(){
// Process the data
});
答案 1 :(得分:1)
而不是暂停,只需在提交对话框信息时调用的函数中包含其余代码:
if(checkUserLogin() == false){
$('#dialog').dialog('open');
$('#dialog').find('.classOfSubmitButton').click(function(e){
loginCode();
}
} else {
loginCode();
}
function loginCode() {
// everything after resume javascript comment
}
答案 2 :(得分:0)
使用事件可能是要走的路。
function sendSubComment(button){
if(checkUserLogin() == false){
$( "#dialog" ).bind( "dialogclose", function(event, ui) {
if(checkUserLogin() == true) //this check is needed to eliminate dead loop
sendSubComment(button); //call again
$( "#dialog" ).unbind(event, ui);
}).dialog('open');
return; //not going further
}
//do the other stuffs
}
答案 3 :(得分:-1)
警告(“按OK继续”); ?
答案 4 :(得分:-1)
您正在谈论模态 jQuery dialog,必须在用户继续使用任何其他GUI元素之前处理。
$('#dialog').dialog("option", "modal", true);
// ^ it would be best to set this when you
// _create_ the dialog, but this works too
$('#dialog').dialog('open');