2014-05-23 84 views
1

我正在構建一個應用程序來管理表格。我正在使用小鬍子模板,以便當我需要發送一些數據時,表單會呈現必要的數據,然後發出請求。 我會盡量多解釋一下。是否有可能通過jQuery提交附加表單?

這是我呈現的形式,現在的工作

function renderForm(selector, args){ 
       $.get('includes/tables/form.mustache', function(template) { 

        var rendered = Mustache.render(template, args); 
        $(selector).append(rendered); 
       }); 
      } 

的事情是,在追加後,我嘗試提交表單如常($ form.submit()),但部分不加工。我明白,該元素不是加載的DOM的一部分,這就是選擇器不起作用的原因。我的問題是,是否有辦法讓它提交我剛添加的表單。我知道我可以使用ajax發送數據,但實際上我需要它發佈並加載頁面。

任何幫助表示讚賞!

編輯:

這是觸發模板渲染功能:

 $('.main').on('click', '.save-absolute', function(){ 

      var update_id = $(this).attr('data-update'); 
      var args = { 
          'id' : 'update_row_form', 
          'method' : 'POST', 
          'action' : document.URL, 
          'method_force' : 'put', 
          'values' : [] 
         }; 

      $('.table_cell_input').each(function(){ 
       var value = $(this).val(); 
       args.values.push({'name' : value, 'value' : value}); 
      }); 
      args.values.push({'name' : 'update_id', 'value' : update_id}); 

      // Renders and submits the form 
      renderForm('.main', args); 

      //NOT SUBMITTING 
      $('#update_row_form').submit(); 
     }); 

而且上面的第一個功能是呈現模板中的一個,那東西的模板處理好了,我可以在代碼中看到它。但.submit()部分只是沒有做任何事情

+1

後追加它,它是加載的DOM的一部分。你應該可以提交它。你能顯示整個代碼嗎? – Barmar

+0

回調中的'$(rendered).submit()',假設它是一個表單? – adeneo

+0

我編輯了我的問題,因爲它是一個大型應用程序很難放置所有的代碼,但我希望我明確表示謝意! – JohnFalcon

回答

0

因爲它是使用普通查找選擇$(#formId).submit()

相反,你應該從DOM尋找元素,並提交動態生成表單就不會被提交:

$(document).find("form#form1").submit(); 

或者您可以參考其他靜態內容來查找表單。

DEMO

+0

我看不出從文檔看有什麼不同。 –

+0

它沒有。它發現了這個元素,它在提交時沒有做任何事情 – JohnFalcon

1

在您的代碼此功能

renderForm('.main', args); 

使用$.get這是異步的。這意味着,繼它

$('#update_row_form').submit(); 

代碼中的Ajax調用,得到您的模板已完成並附加您呈現模板之前運行。

您可以允許renderForm函數接受第三個參數,該參數是在模板呈現後運行的回調函數。您可以在添加表單後選擇做任何你喜歡的事情。

喜歡的東西

function renderForm(selector, args, callback) { 
    $.get('includes/tables/form.mustache', function(template) { 
     var rendered = Mustache.render(template, args); 
     $(selector).append(rendered); 
     if (typeof callback === "function") { 
      callback(); 
     } 
    }); 
} 

將允許您使用

renderForm('.main', args, function() { 
    // anything you like here 
    $('#update_row_form').submit(); 
});