我创建了一个简单的脚本来根据上传的文件生成自定义表单
脚本正常工作,没有问题
唯一的问题是提交创建的不是DOM的一部分,因为它是由Jquery创建的。
当我提交它时,即使它有值,它也会发送空值
这是代码
$(function(){
//------------- Plupload php upload -------------//
// Setup html4 version
$("#html4_uploader").pluploadQueue({
// General settings
runtimes : 'html4',
url : '../../assets/dashboard/php/upload.php',
max_file_size : '10mb',
max_file_count: 15, // user can add no more then 15 files at a time
chunk_size : '5mb',
multiple_queues : true,
// Rename files by clicking on their titles
rename: true,
// Sort files
sortable: true,
});
var uploader = $('#html4_uploader').pluploadQueue();
uploader.bind('FileUploaded', function(up, file, info) {
if (uploader.files.length == (uploader.total.uploaded + uploader.total.failed)) {
$('.gradient').hide();
form = '<form class="form-horizontal" id="mediaAdd" novalidate="novalidate" method="post">';
length = uploader.files.length;
files = uploader.files;
for (var i = 0; i <= length-1; i++) {
form+= '<div class="alert alert-success" id="message" style="display:none;"></div>';
form+= '<div class="form-row row-fluid">';
form+= '<div class="nostyle">';
form+= '<div class="row-fluid">';
form+= '<label class="form-label span3" for="medianame">عنوان الملف</label>';
form+= '<input class="span3 text" name="mediatitle[]" type="text">';
form+= '<input type="hidden" name="mediapath[]" value="'+files[i].name+'" >';
form+= '<strong style="margin-right:20px;" >'+files[i].name+'</strong>';
form+= '</div>';
form+= '</div>';
}
form+= '<div class="form-row row-fluid">';
form+= '<div class="span12">';
form+= '<div class="row-fluid">';
form+= '<div class="form-actions">';
form+= '<div class="span3"></div>';
form+= '<div class="span9 controls">';
form+= '<button type="submit" id="submit" class="btn marginR10" style="margin:10px;" >حفظ</button>';
form+= '<button class="btn btn-danger">مسح</button>';
form+= '</div>';
form+= '</div>';
form+= '</div>';
form+= '</div>';
form+= '</div>';
form+= '</form>';
$('#multiform').html(form);
$('#mediaAdd').submit(function(){
$(form).ajaxSubmit({
type: "POST",
async: false,
data: $('#mediaAdd').serialize(),
success: function(data){
alert(data);
},
error: function(){alert('error');}
});
return false;
});
}
});
});
这是来自php文件的var dumb结果
Array
(
[mediatitle] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
)
[mediapath] => Array
(
[0] => 18.jpg
[1] => 4.jpg
[2] => 7.jpg
[3] => 22.jpg
)
)
对于mediapath []它有值也没有问题,因为它是由脚本给出的,但对于mediatitle [],它给出了空值..
答案 0 :(得分:0)
您需要更改绑定事件的方式,这样您就不必费心将目标添加到dom中了解
这样的事情会起作用:
var $body=$(document.body); //top parent in the dom
$body.on("submit","#mediaAdd",function(e) {})
.on("FileUploaded","#html4_uploader", function//...)
//...
;
在jquery范围内绑定,如果你在一个函数链中.off(
之前使用相同的选择器&amp;同一事件,以避免多次触发事件