2011-03-10 36 views
0

我在頁面上有一個鏈接來切換div的可見性。 div包含發佈的表單的過濾器選項。我想在發佈帖子後保留過濾器的可見性;所以如果它在郵寄之前開放,郵寄後仍然開放。jquery show post post

這是到目前爲止我的腳本代碼:

$(document).ready(function() { 

    // choose text for the show/hide link 
    var showText="Show Filter Options"; 
    var hideText="Hide Filter Options"; 

    // create the toggle link 
    $("#filter-params").before("<p><a href='#' id='toggle-link'>"+showText+"</a>"); 

    // hide the content 
    $('#filter-params').hide(); 

    // capture clicks on the newly created link 
    $('a#toggle-link').click(function() { 

     // change the link text 
     if ($('a#toggle-link').text()==showText) { 
      $('a#toggle-link').text(hideText); 
     } 
     else { 
      $('a#toggle-link').text(showText); 
     } 

     // toggle the display 
     $('#filter-params').toggle('slow'); 

     // return false so any link destination is not followed 
     return false; 
    }); 

}); 
+1

形式爲後張貼,你回到同一頁面? – 3rgo 2011-03-10 14:04:56

+0

這是整個劇本嗎?發佈正常發生,而不是通過AJAX?如果是這樣,爲什麼jQuery的方法? – fabrik 2011-03-10 14:07:18

+0

你可以通過檢查你的php腳本中的一些post變量來做到這一點,或者通過創建一個會話變量來記錄div是最後打開還是關閉。 – 2011-03-10 14:07:20

回答

2

爲什麼不在一個隱藏字段中存儲一個布爾值,該隱藏字段與表單一起發佈?在PHP中這種方式你會知道它的價值,你可以在你的下一個響應中正確渲染它。

讓我知道你是否需要一個例子。

<?php 
    var $defaultFilterSetting = false; 

    // This code only runs when you've performed a post back to this page 
    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 
     $defaultFilterSetting = $_POST["defaultFilterSetting"]; 
    } 
?> 

<form name="input" action="<?php $PHP_SELF;?>" method="post"> 
    <input type="hidden" name="defaultFilterSetting" value="<?=$defaultFilterSetting?>" /> 
    <!-- ... all other html elements --> 
</form> 
<script type="text/javascript"> 
    var filterSetting = $('input[name="defaultFilterSetting"]').val(); 
    alert(filterSetting); 
    // you can change the value here and it will be posted back everytime 
    // eg. let's change it to true here: 
    $('input[name="defaultFilterSetting"]').val(true); 
    // if you would do another postback it should alert true now; 
</script> 

,如果它包含錯別字原諒我,它已經有一段時間,因爲我已經寫了PHP和我沒有一臺主機的設置來測試它反對。所以這是用心寫的。

+0

很高興看到一個例子。 – JonoB 2011-03-10 16:25:37

+0

我希望所提供的例子足夠清楚地解釋它。 – Peter 2011-03-11 07:59:05

1

其儲存在cookie中的狀態。

jQuery Cookie plugin摘錄了一些關於在JavaScript中設置和讀取cookie的令人討厭的事情。

+0

把一些愚蠢的東西存儲在cookie中有點矯枉過正,你不覺得嗎?我同意這很容易,但是當你沒有啓用cookies時,它完全不起作用。 – Peter 2011-03-10 14:11:56

+0

@Peter你會建議你存儲它在哪裏?這看起來並不重要,所以沒有餅乾不會成爲世界末日。 – alex 2011-03-10 14:13:57

+0

由於我們正在處理表單的POST,所以最好將此值與該POST一起發送,並讓php爲接下來的響應設置初始值。 – Peter 2011-03-10 14:18:08

0

您可以在腳本標記中包含php。今天

例如,在我做什麼我在我的

if (isset($_POST['submit'] 
{ 
    $stall_type = sanitize($_POST['stall_type']; 
} 

,然後在我的腳本標籤(的document.ready)進一步下跌的同一頁我有

$('.tandem').hide(); 

<?php if (isset($_POST['submit'])) 
{ 
    if ($stall_type == 'tandem') 
    { ?> 
     $('.tandem').show(); 
    <?php } else { ?> 
     $('.tandem').hide(); 
    <?php }    
} ?>