2013-03-22 65 views
0

我使用AJAX POST提交了一個使用jQuery的靜態表單,它工作得很好。使用AJAX提交動態創建的表單

但是,在調用之後,我用第一個AJAX調用的結果替換了我的表單的內部。之後,再次發佈表單將無法工作。但爲什麼?

這是我的形式:

<form> 
     <div id="optionForm"> 
     Just some SELECT menus 
     </div>   
    </form> 

這是我的發佈形式和替換形式的內部(一些選擇菜單):

<script> 
    jQuery(document).ready(function() { 
     $("select").change(function() { 
      var data = $('form').serialize(); 
      $.post("/test/Update.do", data, function(data) { 
       $("#optionForm").html(data); 
      }); 
     }); 
    }); 
</script> 
+0

順便說一句:我寧願選擇用'$(本).closest(「形式」)'(這是選擇),而不是僅僅$(「形式」)的形式。如果網頁上有多種表單會怎麼樣? – Simon 2013-03-22 11:19:18

+0

謝謝你的建議,西蒙! – jengooo 2013-03-30 14:25:01

回答

1

這不是從完全清楚你的問題,但我猜你選擇的是的形式?

$('select').change只會將更改偵聽器綁定到在執行$('select')時發現的元素。當您替換整​​個表單時,您會銷燬舊的選擇並創建新的選擇,但沒有綁定任何監聽器。使用委派的事件,而不是:

$('#optionForm').on('change', 'select', function() { 
    // post... 
}); 
+0

非常感謝! – jengooo 2013-03-22 11:17:40