附加<input />不起作用

时间:2013-06-27 17:53:52

标签: php javascript html

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

我用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中,但是当表单是sendt时,它们不会被捕获,当我将页面静态添加到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">

3 个答案:

答案 0 :(得分:1)

显然:

 $('<div class="imgOrderAdmin"><label for="file'+i+'">Image '+i+'</label><input type="file" name="file'+i+'" value="file'+i+'" /></div>').appendTo('#UploadForm');

OR

 $('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',确保输入实际上已添加到表单中,而不仅仅是表单外的页面。

答案 1 :(得分:1)

出于安全考虑,浏览器不允许以valueinput元素的type="file"属性进行编程分配。

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

答案 2 :(得分: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'];
  }
}