jquery表单类型=";文件";如何判断何时选择了文件?

jquery表单类型=";文件";如何判断何时选择了文件?,jquery,scripting,Jquery,Scripting,当用户选择一个文件时,我希望显示另一个文件字段。它适用于第一个文件,但如果我在第二个字段中选择了一个文件,则不会再次调用它。为什么不呢 jquery脚本 $(document).ready(function() { var i = 1; $('input:file[name$=\'uploadedFile'+(i-1)+'\']').change(function() { var file = $(this).val();

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

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++;
            }
        });
    });
$(文档).ready(函数(){
var i=1;
$('input:file[name$=\'uploadedFile'+(i-1)+'\']')。更改(函数(){
var file=$(this.val();
如果(文件!==null&&file!==“”){
$(此)。在(“”)之后;
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>

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

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

$('input:file:last').live('change', function() { ... });
请注意,选择器只计算一次,因此它不会拾取
i
中的更改

相反,您应该使用
:last

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

好的。它只在我使用输入:file:last时起作用,而且它是一个更简单的解决方案。谢谢。仅供参考-从jQuery 1.9开始,live已被删除,因此请改用.on()。使用.on()来绑定元素也比使用.live()容易得多。看:谢谢!这让我明白:)在上传了1个项目后就需要这个了。