jquery form type =“file”如何判断文件何时被选中?

时间:2010-03-03 03:08:19

标签: jquery scripting

当用户选择文件时,我希望显示另一个文件字段。它适用于第一个文件,但如果我在第二个字段中选择一个文件,则不会再次调用它。为什么不呢?

jquery脚本

 $(document).ready(function() {
        var i = 1;

        $('input:file[name$=\'uploadedFile'+(i-1)+'\']').change(function() {
            var file = $(this).val();

            if(file !== null && file !== "") {
                $(this).after("<input type=\"file\" name=\"uploadededFile"+i+"\" />");
                i++;
            }
        });
    });

html表单

<form action="PHP/file.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
    <input type="file" name="uploadedFile0" />
    <input type="submit" value="SUBMIT" />
</form>

2 个答案:

答案 0 :(得分:2)

当您编写$(...).change(function)时,您正在将处理程序添加到jQuery对象中当前的元素中。当您添加新的<input>时,它没有任何事件处理程序。

你需要调用.live,它将处理所有匹配元素的事件,无论它们何时被创建。
例如:

$('input:file:last').live('change', function() { ... });

请注意,选择器仅评估一次,因此它不会在i中获取更改 相反,您应该使用:last

答案 1 :(得分:0)

由于此代码仅在加载页面时运行,因此onchange处理程序仅适用于名为uploadedFile0的输入元素。您需要扩展事件处理程序以创建新元素将适当的事件处理函数绑定到它。