2011-11-14 124 views
0

我有一個使用slideToggle()隱藏的窗體。我需要做的是讓用戶在點擊「展示表單」鏈接後查看錶單,填寫表單並點擊提交。然後,如果有任何錯誤允許頁面刷新,div仍然顯示。在頁面刷新後保持slideToggle()div打開?

換句話說,我該如何防止slideToggle()在頁面刷新上重置。否則,用戶必須再次顯示錶單才能看到錯誤。我只是用一個基本的PHP_SELF,而不是AJAX,因爲我想保持它簡單。

這是我目前的JS:

$('a#booknow').click(function() { 
$('#formcontain').slideToggle('slow', function() { 
    $(this).toggleClass('houdini'); 
}); 
return false; 
}); 

感謝

+0

考慮請求頁面的查詢字符串或哈希(如'#showform'或'showform = 1'?),而不是簡單地刷新它。這樣,您可以測試所述查詢字符串或散列的存在,並基於此顯示/隱藏您的表單。 – Blazemonger

回答

2

我會使用一個cookie,另外我會使用一個plugin(因爲編寫客戶端Cookie管理代碼會使我的頭部受傷)。

$('a#booknow').click(function() { 
    $('#formcontain').slideToggle('slow', function() { 
     $(this).toggleClass('houdini'); 
    }); 
    $.cookie('form_visible', $('#formcontain').is(':visible').toString()); 
    return false; 
}); 
然後在頁面加載

$(function() { 
    if($.cookie('form_visible') == 'true') { 
     $('#formcontain').show(); 
    } else { 
     $('#formcontain').hide(); 
    } 
}); 
+0

感謝Bryan,他在這裏找到了jQuery cookie插件:https://github.com/carhartl/jquery-cookie –

1

要保存的狀態,你應該使用一個客戶端存儲,例如,餅乾。 你可以將JS的狀態保存在一個SESSION變量中(然後你需要以某種方式告訴PHP什麼是狀態,或許使用ajax)。