2010-09-03 41 views
0

我使用jQuery.form插件.ajaxSubmit()之間div的彈出和視圖(用於日誌記錄和有時驗證目的)。用戶可以前後導航。一些div有完整的表單數據,在這種情況下,我會使用表單的父div作爲target:。但是,其他div包含文本和導航按鈕,並且它們不需要更新(在ajaxSubmit返回指示要彈出的下一個div ID的字符串之後,只需.hide())。如果我使用$(this).parent('div')作爲目標,整個div將被返回的字符串覆蓋。該字符串僅用於填充隱藏元素以幫助瀏覽這些屏幕/ div。jquery.form更新目標的一些時間

$('.CSRForm').submit(function() { 
    $(this).ajaxSubmit({ 
     target: $(this).parent('div'), //for validation purposes on the forms with data 
     success: StepCall //to check whether the response is valid for redirecting; and logging 
    }); 
    return false; 
}); 

function StepCall(responseText, statusText, xhr, $form) { 
    if (responseText != "Negatory") { //"Negatory" would indicate no navigation 
     $form.parent('div').css("display", "none"); //doesn't seem to work, neither does "hide()" 
     $('#' + responseText).css("display", "block"); 
    } 
} 

而且,我不知道如果我在正確的.ajaxSubmit success回調使用$form。有人知道嗎? website尚不清楚。

+0

什麼是$ form? – SLaks 2010-09-03 21:22:09

+0

再次,該網站是不是很清楚。我最好的猜測是它是一個表單DOM的jQuery對象包裝器。而且我不知道如何在這種情況下使用它來獲得表單的父分區並隱藏它。 – 2010-09-03 21:33:13

回答

0

$ form是對調用表單的包裝引用。

目標$(this).parent('div')已在響應中更新,然後調用成功函數。

您的觸發形式已被xhr響應覆蓋。 $ form.parent在你的成功方法中通過一個錯誤,因爲對$ form的引用不再有效,...

+0

是的,我現在看到了。好斑點。 – hydrogen 2010-09-03 21:45:32

0

我認爲$ form在這裏是一個jQuery對象。我認爲將該對象轉儲到控制檯以查明對象是否存在(僅用於理智)是一個好主意。如果你使用的是螢火蟲,我相信在你的JS中使用console.log()應該可以。

成功

回調函數調用的形式已提交 之後。如果 「成功」回調函數爲 ,前提是在 服務器返回 響應之後調用該函數。它是通過以下 參數:

  1. 1)的responseText或responseXML的值(取決於 的dataType選項的值)。
  2. 2.)如果使用jQuery < 1.4)狀態文本
  3. 3.)XHR(或jQuery的包裹的形式元件
  4. 4.)jQuery的包裹的形式元件(或未定義如果使用jQuery < 1.4)

因此它肯定應該作爲一個jQuery對象傳遞給你。我猜如果你使用的是jQuery < 1.4,那麼你很麻煩。

+0

我試過console.log();之前和之後與$表格行,並切換到Firebug的控制檯標籤 - 我沒有看到任何東西,但帖子。我正在使用jQuery 1.4.1 – 2010-09-03 21:36:09

+0

試試xhr參數? – hydrogen 2010-09-03 21:41:42

+0

因爲我正在使用1.4。1,它不會是被包裝的形式,而是xhr本身,它不會有任何方式參考父div – 2010-09-03 21:46:27