1

我有一个页面,我想为表单生成输入。

我用 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">
4

3 回答 3

1

显然:

 $('<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”之前添加“表单”,您可以确保将输入实际添加到表单中,而不仅仅是表单之外的页面。

于 2013-06-27T18:04:47.657 回答
1

出于安全原因,浏览器不允许以编程方式valueinput带有type="file".

想象一下,如果这是可能的。恶意 javascript 将能够从用户计算机上传(或至少尝试上传)任意文件。

于 2013-06-27T18:05:32.900 回答
0

我认为将名称设为数组会更容易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'];
  }
}
于 2013-06-27T18:09:55.700 回答