2012-01-29 52 views
0

我有一個具有下拉列表的表單。但是,用戶可以通過點擊旁邊的按鈕來註冊一個新值(也可以在數據庫中)。如何刷新表單中的選擇選項而不導致表單輸入丟失(Django + jQuery)

我設法通過AJAX方式進行註冊。但是,我沒有找到刷新下拉列表的方式,以便用戶可以選擇新插入的值。我試過location.reload(true)但是這會抹掉現有的表單輸入。有沒有辦法讓我刷新下拉列表,或刷新沒有輸入丟失?

我的JQuery看起來像這樣

$('#formSupplier').submit(function(e){ 
    $('#divProcessingMessage').show(); 
    $('#divSupplierForm').hide(); 
    $.post('/item/xhr_reg_supplier/',$('#formSupplier').serializeArray(),   
     function(data){ 
      if(data){ 
       alert('Supplier registration successful') 
       $('#divProcessingMessage').hide(); 
       $('#divSupplierForm').show(); 

       //Clear the form's field 
       $('#formSupplier').find(':input').each(function(){ 
        switch(this.type) { 
         case 'password': 
         case 'select-multiple': 
         case 'select-one': 
         case 'text': 
         case 'textarea': 
          $(this).val(''); 
          break; 
         case 'checkbox': 
         case 'radio': 
          this.checked = false; 
        } 
       }); 

       $('#supplier_form').hide(); 
       location.reload(true); 
      } else { 
       alert('Supplier registration failed') 
      }   
     } 
    ); 

我使用Django 1.3.1框架僅供參考。

+1

爲什麼不重繪'select',刪除,更新然後再通過Jquery創建它! – Ahsan 2012-01-29 12:37:58

+0

@Ahsan呃..怎麼樣?對不起,我是JQuery><的新手 – 2012-01-29 22:16:49

回答

1

有三種方法可以做到這一點:

document.getElementById('form_id').reset() 

$('#FormID').each (function(){ 
    this.reset(); 
}); 

jQuery.fn.reset = function() { 
    $(this).each (function() { this.reset(); }); 
} 

$("#FormID").reset(); 
0

在處理AJAX請求的觀點,把它重新呈現表單字段&返回HTML。然後在JS回調中,用jquery替換它:$('select[name="thefield"]').replaceWith(data)。如果在下拉列表更改時觸發頁面事件,則可能需要將事件重新綁定到新插入的DOM片段。