2011-11-16 71 views
0

我有兩個下拉列表。 第二個是根據第一個選擇的值填充的。我正在使用Double Combo Script Credit JavaScript工具包來做到這一點(我對javascript非常不滿)。 我用它來過濾來自我的Mysql數據庫的結果。 問題是,當用戶應用過濾器我希望他看到他應用(當頁面刷新或用戶轉到其他頁面) - 這些值應該被視爲在下拉列表中選擇。我無法弄清楚我應該在哪裏放置一個事件或其他東西。基於php會話值自動選擇兩個下拉列表值

我是從第二個下拉列表中的PHP會召開子目錄值:

if (isset($_SESSION['subcat']) && !isset($_GET['subcat'])){ 
$color= $_SESSION['subcat']; 
} 
elseif (!isset($_SESSION['subcat']) && isset($_GET['subcat'])) 
{ 
    $_SESSION['subcat'] = mysql_real_escape_string($_GET['subcat']); 
    $color= $_SESSION['subcat']; 
    } 
    elseif (isset($_SESSION['subcat']) && isset($_GET['subcat'])){ 
     unset($_SESSION['subcat']); 
     $_SESSION['subcat'] = mysql_real_escape_string($_GET['subcat']); 
     $color= $_SESSION['subcat']; 
     } 
else { 
    $color= ""; 
    }; 

我可以在第一個下拉列表回顯選擇,基於會話的價值和這樣的作品,但第二個當頁面刷新時不會生成一個下拉列表,並且我不知道應該在哪裏回顯'selected ='選擇''或者也許一切只能使用javascript完成?請幫忙。

代碼:

<div class="filter"> 
<form method="get" name="doublecombo" action="" id="filterform" > 
<select name="example" id="exampl" size="1" onChange="redirect(this.options.selectedIndex)"> 
<option>All kinds</option> 
<option>Women</option> 
<option>Men</option> 
</select> 
<select name="subcat" size="1" id="subcategory"> 
<option value="lists.php">All colors</option> 
</select> 
<input type="button" name="test" value="Filter" onClick="go()"> 
</p> 

    <script> 
    <!-- 

    /* 
    Double Combo Script Credit 
    By JavaScript Kit (www.javascriptkit.com) 
    Over 200+ free JavaScripts here! 
    */ 

    var groups=document.doublecombo.example.options.length 
    var group=new Array(groups) 
    for (i=0; i<groups; i++) 
    group[i]=new Array() 
    group[0][0]=new Option("All colors","list.php") 

    group[1][0]=new Option("Pink","list.php?subcat=1 ") 
    group[1][1]=new Option("White","list.php?subcat=2") 
    group[1][2]=new Option("Green","list.php?subcat=3") 


     group[2][0]=new Option("Black","list.php?subcat=12") 
     group[2][1]=new Option("Blue","list.php?subcat=13") 
     group[2][2]=new Option("Grey","list.php?subcat=14") 
     group[2][3]=new Option("Brown","list.php?subcat=15") 



     var temp=document.doublecombo.subcat 

     function redirect(x){ 
     for (m=temp.options.length-1;m>0;m--) 
     temp.options[m]=null 
     for (i=0;i<group[x].length;i++){ 
     temp.options[i]=new Option(group[x][i].text,group[x][i].value) 
     } 
     temp.options[0].selected=true 
     } 

     function go(){ 
    location=temp.options[temp.selectedIndex].value 
     } 
     //--> 
     </script> 
     </form></div> 

回答

2

你可以設置一個cookie來保存所選的值,所以如果用戶選擇了有選擇和刷新,那麼您需要檢查,如果cookie存在,然後相應地填充菜單。

更新:

這將存儲選定值,如果用戶刷新頁面重新填充的選擇菜單。

首先選擇加入onkeup:

<select name="example" id="exampl" size="1" onchange="redirect(this.options.selectedIndex)" onkeyup="redirect(this.options.selectedIndex)"> 

第二選擇和如下改動檢查

<select name="subcat" size="1" id="subcategory" onchange="checks(this)" onkeyup="checks(this)"> 

現在找到temp.options[0].selected=true線路,並添加以下

createCookie("selected_option_1", x, 0); 
    if(x==0){ 
     eraseCookie("selected_option_2"); 
    } 
這directaly

然後在你的腳本塊底部添加這兩個新功能ķ

// checks if the Second Select has changed 
function checks(oWhich){ 
    createCookie("selected_option_2", oWhich.selectedIndex, 0); 
} 

// repopulate the options base on selection thats saved in the cookies 
onload = function(){ 

if(readCookie("selected_option_1") != null) { 

    redirect(document.doublecombo.example.options.selectedIndex = readCookie("selected_option_1")); 

    if(readCookie("selected_option_2") != null) { 
    document.doublecombo.subcat.options.selectedIndex = readCookie("selected_option_2"); 
    } 
} 

    } 

Finaly這些功能/紙條工作,你會使用以下函數位於包括此需要

//該Cookie的IM和你chould確定。 http://www.quirksmode.org/js/cookies.html#script

現在一旦表單已經提交給您GET像往常一樣的選定的值,並重復菜單,一旦你完成了cookie,你可以刪除它們。

+0

我抱着值已屆,我不知道如何來重新填充第二個下拉列表基於該值時,自動頁面刷新 – Christine

+0

@Christine我不明白如果表單尚未提交,您將如何在會話中存儲值?請參閱如何使用cookie存儲選定值的更新 – david

+0

謝謝!這工作! – Christine

0

如果這是jQuery的你使用,你可以嘗試這樣的頁面上的短PHP標籤:

jQuery('#MyDropDown').val('<?php echo $_SESSION['MyStoredValue']; ?>');

如果你不使用jQuery,但直接的JavaScript,這將有同樣的效果:

document.getElementById("MyDropDown").value = '<?php echo $_SESSION['MyStoredValue']; ?>'

相關問題