基于php会话值自动选择的两个下拉列表值
我有两个下拉列表。 第二个基于在第一个中选择的值填充。我正在使用JavaScript工具包提供的双组合脚本来实现这一点(我对JavaScript非常不熟悉)。 我用它来过滤Mysql数据库中的结果。 问题是,当用户应用过滤器时,我希望他看到他应用了什么(当页面刷新或用户转到其他页面时)-这些值应该在两个下拉列表中都被视为选中。我想不出应该在哪里举办活动或其他什么 我保存php会话中第二个下拉列表中的子类别值:基于php会话值自动选择的两个下拉列表值,php,javascript,jquery,Php,Javascript,Jquery,我有两个下拉列表。 第二个基于在第一个中选择的值填充。我正在使用JavaScript工具包提供的双组合脚本来实现这一点(我对JavaScript非常不熟悉)。 我用它来过滤Mysql数据库中的结果。 问题是,当用户应用过滤器时,我希望他看到他应用了什么(当页面刷新或用户转到其他页面时)-这些值应该在两个下拉列表中都被视为选中。我想不出应该在哪里举办活动或其他什么 我保存php会话中第二个下拉列表中的子类别值: if (isset($_SESSION['subcat']) && !
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=”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>
各式
女人
男人
五颜六色
您可以设置一个cookie来保存所选的值,因此如果用户选择了该选项并刷新,您将检查cookie是否存在,然后相应地填充菜单
更新:
这将存储选定值,如果用户刷新页面,则重新填充选择菜单
首先选择已添加的onkeup:
<select name="example" id="exampl" size="1" onchange="redirect(this.options.selectedIndex)" onkeyup="redirect(this.options.selectedIndex)">
然后在脚本块的底部添加这两个新函数
// 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");
}
}
}
最后,为了使这些功能/票据发挥作用,您需要
//我用于函数的cookie脚本位于下面,包括这个,您可以选择ok
现在,表单提交后,您可以像往常一样
获取所选的值,并重新填充菜单,一旦使用cookie,您就可以删除它们。如果您使用的是jQuery,您可以在页面上尝试一个简短的PHP标记,如下所示:
jQuery('#MyDropDown').val('')代码>
如果您使用的不是jQuery,而是纯JavaScript,则会产生相同的效果:
document.getElementById(“MyDropDown”).value=''
我已经在会话中保存了值,我不知道如何在页面打开时根据该值自动重新填充第二个下拉列表refreshes@Christine我不明白如果表单未提交,您将如何在会话中存储这些值?请参阅有关如何使用cookie存储选定值的更新
createCookie("selected_option_1", x, 0);
if(x==0){
eraseCookie("selected_option_2");
}
// 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");
}
}
}