[英]jQuery - wait for user input
我遇到一个讨厌的问题。 它去了:
我的脚本上传了文件,并以JSON编码的对象作为响应,该对象包含需要其他信息的文件ID号。
现在,问题了。 我想显示一个对话框(一个表单),等待用户填写它,通过AJAX将其发送回服务器,然后对第二个ID号重复相同的过程,依此类推。
我尝试使用$ .each来执行此操作,但未成功。 我读了$ .each可以通过在回调函数中返回false来终止,但是我没有找到任何提及如何等待事件的信息(例如,单击表单中的Submit按钮),然后继续循环。
好天气
coll_id = 0; // collection pointer
collection = [
{
id : 4,
fileName : 'somefile.mp3'
},
{
id : 6,
fileName : 'anotherFile.mp3'
}
];
function openDialog(){
$('#browser-add-files-id3').bind('dialogclose', function(){
if(coll_id >= collection.length-1){
try{
closeDialog(collection[coll_id].id);
}
catch(err){
}
coll_id++;
}
else {
closeDialog(collection[coll_id].id);
coll_id++;
openDialog();
}
});
$('#id3-file').text(collection[coll_id].fileName);
$('#browser-add-files-id3').dialog('open');
}
function closeDialog(mid){
// $.post to /url/param/mid
// cleanup the input fileds in dialog
}
您不能将异步行为与同步的.each()混合使用。 您可以使用.each()遍历所有项目,并检查是否找到未处理的项目。 如果是这样,则将其标记为已处理,则触发异步请求,然后返回false以停止each()。
在异步成功回调中,只需再次触发.each()循环,它将跳过所有已处理的项目,如果发现尚未处理的项目,则将其标记为此类并启动异步请求,依此类推。
为了将项目标记为已处理,我建议使用$(item).data('processed', true)
或使用jQuery的data函数的任何类似方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.