繁体   English   中英

jQuery-等待用户输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM