2011-08-24 59 views
0

我有各種各樣的悲痛,試圖重新使用jQuery-UI對話框。第一次在一切正常。第二次,文本字段具有從第一次到以前的值。爲了使它工作,在我做對話(「打開」)後立即在click()函數中使用$("#fname, #lname, #email").val('');手動清除文本字段值。這有效地清除了字段以供重用,但是當我使用serialize()方法提交表單時,發送的數據如下所示:fname=two&lname=2&[email protected]&fname=First+Name&lname=Last+Name&email=Email+ad dress。 「名字」,「姓氏」和「電子郵件地址」是使用我不明白的一些fieldtag插件設置的水印。重複使用jQuery-UI對話框

主要問題是,必須有一些簡單的方法來使用對話框,隨後它會初始化它是第一次的方式。 close()方法似乎沒有這樣做。該對話框正在使用autoOpen設置爲false來創建。

$("#user-form").dialog({ 
    autoOpen: false, 
    height: 400, 
    width: 625, 
    modal: true, 
    resizable: false, 
    open: function(event, ui) { 
     $("#fname, #lname, #email").val(''); 
     }, 
    buttons: { 
     "Update": function() { 
      var bValid = true; 

      allFields.removeClass("ui-state-error"); 
      if (bValid) { 
       $.get('AJAX/AddEditUser.php', $("#fname, #lname, #email").serialize(), function(){ 
        $.get('users.php', function(data){ 
         $("#contentcontainer").html(data); 
        }); 
       }); 
       $(this).dialog("close"); 
       $("#wholeArea").hide(); 
       $("#placeholder").show(); 
       $("div.content-area").load('home.html'); 
      } 
     }, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
    }, 
    close: function() { 
     allFields.val("").removeClass("ui-state-error"); 
    } 
}) 
+0

我們可以看到打開對話框的代碼嗎? –

+0

對不起,您可能收到的所有通知。 – user39653

回答

0

我想通了,我在做什麼,這是我的猜測是一個非常愚蠢的錯誤。當通過對話框添加數據時,爲了顯示新輸入的數據,我使用jQuery hmtl()方法首先用創建頁面的整個頁面填充容器div。我認爲這會消除已經存在但顯然不存在的內容,也許是因爲原始HTML已經在瀏覽器內存中了?我不確定,無論如何,它會導致各種各樣的jQuery插件的奇怪行爲。現在我放棄了這樣做,只是用fnReloadAjax()更新我的數據表,各種問題開始消失。感謝大家的貢獻。

0

的jQuery UI的對話並不意味着清除內任何東西當它關閉,這是什麼意思做的是顯示一個div作爲一個對話框,讓你自定義它應該如何的外觀和行爲,這意味着如果您輸入的值並沒有關閉清除它們,這些值仍將保留。

提交水印文字的原因是因爲您的水印代碼將文本放入輸入元素中,並且在表單提交時不會將其清除,另一種方法是找到另一個水印插件,輸入元素,而不是完全刪除問題。

+0

我已經刪除了對fieldtag插件的所有引用。現在,當我進行後續輸入時,傳遞給php的數據如下所示:'fname = two&lname = 2&email = two @ aol.com&fname =&lname =&email ='換句話說,數據字段會附加空白值。 PHP只能看到最後一組數據,當數據庫進入數據庫時​​,它會出錯,因爲這些字段不允許爲空。 – user39653

+0

@ user38653它看起來好像每個字段有2個元素(就好像兩個元素具有相同的ID一樣),請問您可以添加相關的html嗎? – Joakim

+0

每個表單元素確實只有一個字段。如果我第三次運行它,會出現第三組變量。更新方法是向表單添加一組字段,或者serialize()認爲它是。 – user39653

0

與Joakim類似,我還懷疑它是正在播放的水印插件。嘗試禁用它並查看您的表單數據是否符合預期。

此外,您還可以使用open事件每次打開時初始化的對話框:

$('#dialog').dialog({ 
    open: function(event, ui) { 
     $("#fname, #lname, #email").val(''); 
    }, 
    autoOpen: false, 
    /* your other options... */ 
}); 
+0

我認爲你們是對的,它是讓我悲傷的水印。我正在使用我不明白的fieldtag插件。我認爲**我已經禁用了這個控件(我沒有看到水印),但現在當我通過查看serialize()產生的視圖來查看提交的數據時,我得到了下面的goffy外觀字符串:'fname = one&lname = one&email = one @ aol.com&fname =&lname = email ='所以當PHP獲取數據時,它會讀取最後一組數據,並將所有三個字段視爲null。 – user39653