2013-02-08 114 views
0

我创建了一个简单的脚本来生成基于上传的文件
脚本工作正常,没有问题
唯一的问题是,当提交创建了这不是DOM的一部分,因为它是由jQuery的创建自定义表单。
当我提交它发送空值,即使它有值。
这里是代码提交表单由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文件

Array 
(
    [mediatitle] => Array 
     (
      [0] => 
      [1] => 
      [2] => 
      [3] => 
     ) 

    [mediapath] => Array 
     (
      [0] => 18.jpg 
      [1] => 4.jpg 
      [2] => 7.jpg 
      [3] => 22.jpg 
     ) 
) 

用也没有问题mediapath []它有值VAR哑结果,但对于mediatitle []它给出了空值..

回答

0

你需要改变你绑定事件的方式,所以你不必担心他们的目标何时被添加到dom

像这样将工作:

var $body=$(document.body); //top parent in the dom 

$body.on("submit","#mediaAdd",function(e) {}) 
    .on("FileUploaded","#html4_uploader", function//...) 
    //... 
     ; 

绑定jQuery的范围内,如果你的函数链.off(内做相同的选择&同一事件之前,以避免事件被多次触发