我有一个页面,我想为表单生成输入。
我用jquery:来做这件事
function getval() {
$('#UploadForm').empty();
var limit = $("#GalleryCount").val();
for(var i = 1;i<=limit;i++) {
$('#UploadForm').append('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file'+i+'" value="file'+i+'" /></div>');
}
}
元素确实会添加到ID为#UploadForm的div中,但当表单被发送时,它们不会被捕获,当我静态地将feild添加到HTML页面时,它就起作用了,就像我用JS生成的完全相同的副本一样。
PHP:
$i = 1;
while (!empty($_FILES['file'.$i]['name'])) {
echo $_FILES['file'.$i]['name'];
$i++;
}
HTML表单属性:
<form class="form-horizontal well" action="postAction.php" method="post" enctype="multipart/form-data">
出于安全原因,浏览器不允许为具有type="file"
的input
元素编程分配value
属性。
想象一下,如果这是可能的。恶意javascript能够从用户计算机上传(或至少尝试上传)任意文件。
显然:
$('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file'+i+'" value="file'+i+'" /></div>').appendTo('#UploadForm');
或
$('form#UploadForm').append('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file'+i+'" value="file'+i+'" /></div>');
应该起作用。
通过在"#UploadForm"之前添加"form",您可以确保输入实际添加到表单中,而不仅仅是表单外的页面。
我认为将名称设为数组name="file[i]"
会更容易
$('#UploadForm').append('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file['+i+']" /></div>');
和php
for($i=1;$i<=count($_FILES['file']);$i++){
if(!empty($_FILES['file'][$i]['name'])) {
echo $_FILES['file'][$i]['name'];
}
}