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

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

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(""); i++; } }); }); 

HTML表单

 

当你编写$(...).change(function) ,你将把处理程序添加到当前在jQuery对象中的元素。 当你添加一个新的 ,它没有任何事件处理程序。

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

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

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

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