附加<input>不起作用



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

我用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'];
  }
}

最新更新