2011-09-05 100 views
0

我有一個應用程序,其中有兩個按鈕。每個將動態生成一個jQuery UI對話框jquery不刷新元素的值

$("<div class='dialog' style='font-size:12px' />").load(base_url + "/students/edit_profile/load_new_emp_form").dialog(options); 
} 

$("<div class='dialog' style='font-size:12px' />").load(base_url + "/students/edit_profile/load_new_edu_form").dialog(options); 
    } 

這兩個對話框都有一個帶有相同id #actBtn按鈕的窗體。我有一個這個按鈕的共同處理程序,因爲兩個對話都具有提交數據的相同操作。常見的處理函數是

$("#addBtn").live("click", function(){ 
    var pst = {}; 
    pst = $(this).parent().serializeArray(); 
    var clbk = $("#clbk").val();  
    var tbl = ""; 
    tbl = $("#tbl").val(); 
    $.post(base_url + "/general/insert_new_entity/" + tbl, pst, function(data){ 
     $("#" + clbk).click(); 
    }); 
}); 

正如你可以看到這隻會序列化當前的形式是顯示器和形式將有一個輸入隱藏的元素與id作爲TBL指定表名在這種形式的數據會去。

我的問題是在下次加載一個表單後,tbl名稱保持不變,它不會使用當前表名更新。任何想法,爲什麼這是?

關於ID更新:

我知道的ID都應該是獨一無二的,甚至在我的情況下,他們是唯一的。儘管兩個表單都具有相同ID的元素,但它們不能同時存在於DOM中。它們是模態對話框,並且在任何時間點都只能打開一個對話框,因此DOM中只能存在一個具有相同ID的元素。

回答

2

根據定義,ID's應該是唯一的。你有兩個事實是第一個需要解決的問題。具有相同ID的多個元素會導致不可預知的行爲。

+0

我知道身份證號碼應該是唯一的,在我的情況下,在任何時間點,只能有一個具有相同身份證號的元素,因爲每個身份證號碼都是模式對話框,在另一個可以加載之前,前一個必須是卸載。因此,只能有一個具有相同ID的元素。 – swordfish

+0

我會懷疑jim對相同ID的說明可能是正確的。沒有理由應該得到錯誤的價值。實際上只有兩種可能性。 Tbl不是你認爲的那樣,或者jQuery不喜歡你在重新使用舊ID的新元素中加載。用另一個標識符抓住tbl,看看它是否適合你。 – mrtsherman