0

我正在使用以下代码来创建 ajax 上传脚本。我当前的任务是使用 jquery 动态创建一个表单,所以我通过以下代码执行此操作

<script src="http://code.jquery.com/jquery-latest.js"></script>

<input id="files" name="file" type="file" value=""/>


<script>
$(document).ready(function () {

    $('#files').live('change', function () {
        var formId = 'jUploadForm';
        var form = $('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
        var oldElement = $('#files');
        var newElement = $(oldElement).clone();


        $(oldElement).attr('id', 'files');
        $(oldElement).before(newElement);

        alert('fffffff');
        //alert(projectid);
        //return false;
        $(oldElement).appendTo(form);
    });
});
</script>

aboce 代码中的错误是,在我选择的文件值之前附加 newElement 之后,我从浏览按钮中选择的任何内容都将消失,这些按钮将出现在克隆的文件类型中,但将从我拥有的原始文件类型中删除。上述问题仅发生在 chrome 和 IE 中它在 mozila 中工作正常请帮助

4

1 回答 1

1

你不能放oldElement之前,newElement因为你还没有添加newElement到 DOM 中。

同样,您也不能追加oldElement到DOM,form因为form还没有添加到 DOM 中。

两者newElementform必须在创建它们之后添加到文档中,然后才能对它们进行任何操作。

最后,你在运行时什么都不做,$(oldElement).attr('id', 'files');因为oldElement已经 files.

于 2012-06-12T14:56:49.077 回答