使用jQuery向表单添加文件输入
Add file input to form using jQuery
我对jQuery很陌生,我试图制作简单的HTML上传页面,我想在选择一些文件后添加新的文件输入到表单。我试过这个代码
<form id="upload" action="upload.php" method="POST" enctype="multipart/form-data" onchange="addField();">
<label for="file">Soubor:</label>
<input type="file" name="files[]" id="file" /><br />
<input type="submit" name="Odeslat" value="Odeslat soubor" />
</form></body>
<script>
$('#upload').delegate('input[type=file]', 'change', function(){
alert('Alert');
addField();
});
</script>
和addField()函数
function addField(){
$('<input type="file" name="files[]" id="file" /><br />').insertAfter('#file');
};
但是如果我运行这段代码,第三个输入字段被插入到第一个输入字段之后,而不是在最后一个字段之后。是否有可能在最后一个文件输入之后添加输入字段,而不使用这些输入的唯一id ?http://jsfiddle.net/aHrTd/
谢谢你的帮助
这个怎么样- (找到最后一个input:file
在表单中并在它后面插入新的输入)
function addField(){
$('form input:file').last().after($('<input type="file" name="files[]" class="file" /><br />'));
}
解决方案:http://jsfiddle.net/aHrTd/4/
为新的文件输入添加唯一的名称和id,并按照pXL的建议在最后一个文件输入后插入。
请注意,我使用了最未充分利用的jQuery功能之一,尽管它很容易找到(http://api.jquery.com/jQuery/),可以以一种干净的方式为您构建一个新元素。
<form id="upload" action="upload.php" method="POST" enctype="multipart/form-data" onchange="addField();">
<label for="file">Soubor:</label>
<input type="file" name="files" id="file" /><br />
<input type="submit" name="Odeslat" value="Odeslat soubor" />
</form>
<script>
function addField(){
var lastfile = $('form input:file').last();
var countfile = ($('form input:file').length)+1;
$( "<input/>", {
"type": "file",
"name": "file_"+countfile,
"id": "file_"+countfile
}).insertAfter(lastfile);
fileinputmonitor();
}
function fileinputmonitor(){
$('input[type="file"]').change(function(){
alert('Alert');
addField();
});
}
fileinputmonitor();
</script>
您的输入必须具有唯一的id。给他们一个唯一的id,应该可以正常工作。
可以使用。last()
HTML
<form id="upload" action="upload.php" method="POST" enctype="multipart/form-data" onchange="addField();">
<label for="file">Soubor:</label>
<input type="file" name="files[]" id="file" class='dynamic-file' /><br />
<input type="submit" name="Odeslat" value="Odeslat soubor" />
JS
function addField(){
$('<input type="file" name="files[]" class="dynamic-file" /><br />').insertAfter($('.dynamic-file').last());
};
相关文章:
- Javascript,文件输入和FormData问题
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 访问javascript文件输入变量的值
- 从IE中的不同元素调用时,文件输入控件未正确启动
- 多次打开多个文件输入,而不会丢失以前选择的文件
- jquery形成多文件输入字段Value()
- 如何从 Chrome 中的文件输入中删除“未选择文件”工具提示
- 如果从文件输入按钮调用 .ajaxSubmit() 时,它是必需的表单
- 生成由文件输入在特定时间选择的视频文件的缩略图/快照
- 使用javascript获取文件输入
- krajee引导程序文件输入上传
- on('change')不适用于动态添加的文件输入
- 选择要初始化精细上传器的文件输入
- 在DOM中以img的形式插入文件输入
- 单击跨度内的隐藏文件输入会导致RangeError
- 显示当前文件输入有文件后的下一个文件输入
- Krajee文件输入小部件'上传'方法引发异常
- 在引导文件输入中通过post发送一个额外的变量
- 引导文件输入
- 为什么在文件输入上触发点击事件也会在表单上触发提交事件