JS二级联动下拉菜单,把第二个菜单里的值传出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS二级联动下拉菜单,把第二个菜单里的值传出相关的知识,希望对你有一定的参考价值。

我有一个代码:
怎么让取到城市的值放到VALUE里,现在是取省份的值。。。
我想得到的不是文字内容,是选择了城市后把一个固定的字符串传到后续的接口里
例如:北京代表‘1‘ 天津代表‘2’ 下拉菜单选择 北京的时候 把1传到action里
var city=[
["北京","天津","上海","重庆"]
];
function getCity()
var sltProvince=document.getElementById("province");
var sltCity=document.getElementById("city");
var provinceCity=city[sltProvince.selectedIndex-1];
sltCity.length=1;
for(var i=0;i<provinceCity.length;i++)
sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]);



</script>
</head>
<body>

<form action="somepage.asp" name=theForm">
<select name="province" id="province" onchange="getCity()">
<option value="0" selected>请选择所在省份</option>
<option value="直辖市">直辖市</option>
</select>
<select id="city" name="city">
<option value="0">请选择所在城市</option>
</select>
</form>

参考技术A <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script>
var city=[["北京","天津","上海","重庆"] ];
function getCity()
var sltProvince=document.getElementById("province");
var sltCity=document.getElementById("city");
var provinceCity=city[sltProvince.selectedIndex-1];
sltCity.length=1;
for(var i=0;i<provinceCity.length;i++)
sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]);


//这里就是取当前被选中的下拉框的值。
function showInfo()
var sltProvince=document.getElementById("province");
var sltCity=document.getElementById("city");
for(var i=0;i<sltCity.length;i++)
if(sltCity.options[i].selected)
document.getElementById("cityValue").innerHTML=sltCity.options[i].value;


for(var i=0;i<sltProvince.length;i++)
if(sltProvince.options[i].selected)
document.getElementById("pro").innerHTML=sltProvince.options[i].value;



</script>
</head>
<BODY>
<form action="somepage.asp" name=theForm">
<select name="province" id="province" onchange="getCity()">
<option value="0" selected>请选择所在省份</option>
<option value="直辖市">直辖市</option>
</select>

<select id="city" name="city">
<option value="0">请选择所在城市</option>
</select>
<input type="button" onclick="showInfo();"/>
</form>

<div id="showvalue">
省份:<span id="pro"> </span>  城市 : <span id="cityValue"> </span>
</div>
</BODY>
</HTML>
自己写的。测试了。看看是不是你想要的结果。
参考技术B <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Option 2</title>
<script>
/*var citys=[["==请选择城市=="],["南京","无锡","苏州","镇江","常州","连云港"],["济南","烟台","青岛","日照"],["杭州","宁波","义乌","温州"],["合肥","芜湖","马鞍山","黄山"]];
*/
var citys=new Array();
citys["江苏"]=["南京","无锡","苏州","镇江","常州","连云港"];
citys["山东"]=["济南","烟台","青岛","日照"];
citys["浙江"]=["杭州","宁波","义乌","温州"];
citys["安徽"]=["合肥","芜湖","马鞍山","黄山"];

window.onload=function()
var selP=document.getElementById("selProv");
var op=new Option("江苏",1);
selP.options.add(op);
op=new Option("山东",2);
selP.options.add(op);
op=new Option("浙江",3);
selP.options.add(op);
op=new Option("安徽",4);
selP.options.add(op);

function changeCitys()
var obj=document.getElementById("selProv");
var ind=parseInt(obj.value);//索引下标值
//alert(obj.options[obj.selectedIndex].text);
var prov=obj.options[obj.selectedIndex].text;//所选中的内容
var selC=document.getElementById("selCity");
//selC.options.length=1;
selC.length=0;
var op;
for(var i=0;i<citys[prov].length;i++)
op=new Option(citys[prov][i],""+(i+1));
selC.options.add(op);

/*switch(ind)
case "1"://江苏
op=new Option("南京",11);
selC.options.add(op);
op=new Option("苏州",12);
selC.options.add(op);
op=new Option("无锡",13);
selC.options.add(op);
break;
case "2":
op=new Option("济南",21);
selC.options.add(op);
op=new Option("青岛",22);
selC.options.add(op);
op=new Option("烟台",23);
selC.options.add(op);
break;
case "3":
op=new Option("杭州",31);
selC.options.add(op);
op=new Option("宁波",32);
selC.options.add(op);
op=new Option("义乌",33);
selC.options.add(op);
break;
case "4":
op=new Option("合肥",41);
selC.options.add(op);
op=new Option("芜湖",42);
selC.options.add(op);
op=new Option("马鞍山",43);
selC.options.add(op);
break;
*/

</script>
</head>

<body>
省份:<select id="selProv" onchange="changeCitys()">
<option value="0" >==请选择省份==</option>
</select><br />
城市:<select id="selCity">
<option >==请选择城市==</option>
</select><br />
</body>
</html>
你参考一下吧 可以运行的
参考技术C <select id="city" name="city">加上onchange事件
onchange=getcityvalue(this)把自己当做参数传出来,然后你取this。value或者this。text都可以
参考技术D 这里有一个多级联动下拉select菜单
还可以自己设置默认显示值
里面有代码可以参考

参考资料:http://www.blueidea.com/common/shoutbox/redir.asp?1=u&id=11685

本回答被提问者和网友采纳

jQuery+PHP+MySQL实现二级联动下拉菜单


二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动。本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果。

先看下效果

 

实现的效果就是当选择大类时,小类下拉框里的选项内容也随着改变。实现原理:根据大类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的小类,并返回JSON数据给前端处理。

XHTML

首先我们要建立两个下拉选择框,第一个是大类,第二个是小类。大类的值可以是预先写好,也可以是从数据库读取。

<label>大类:</label> 
<select name="bigname" id="bigname"> 
   <option value="1">前端技术</option> 
   <option value="2">程序开发</option> 
   <option value="3">数据库</option> 
</select> 
<label>小类:</label> 
<select name="smallname" id="smallname"> 
</select> 

jQuery

先写一个函数,获取大类选择框的值,并通过$.getJSON方法传递给后台server.php,读取后台返回的JSON数据,并通过$.each方法遍历JSON数据,将对应的值写入一个option字符串,最后将option追加到小类里。

function getSelectVal(){ 
    $.getJSON("server.php",{bigname:$("#bigname").val()},function(json){ 
        var smallname = $("#smallname"); 
        $("option",smallname).remove(); //清空原有的选项 
        $.each(json,function(index,array){ 
            var option = "<option value='"+array['id']+"'>"+array['title']+"</option>"
            smallname.append(option); 
        }); 
    }); 
} 

注意,在遍历JSON数据追加之前一定要先将小类里的原有的项清空。清空选项的方法有两种,一种是上文代码中提到,还有一种更简单直接的方法:

smallname.empty(); 

然后,在页面载入后执行调用函数:

$(function(){ 
    getSelectVal(); 
    $("#bigname").change(function(){ 
        getSelectVal(); 
    }); 
}); 

在页面初始的时候,下拉框是要设置选项的,所以在初始的时候就要调用getSelectVal(),而当大类选项改变时,也调用了getSelectVal()。

PHP

include_once("connect.php"); //链接数据库 
 
$bigid = $_GET["bigname"]; 
if(isset($bigid)){ 
    $q=mysql_query("select * from catalog where cid = $bigid"); 
    while($row=mysql_fetch_array($q)){ 
        $select[] = array("id"=>$row[id],"title"=>$row[title]); 
    } 
    echo json_encode($select); 

根据jQuery传递过来的大类的value值,构造SQL语句查询分类表,最终输出JSON数据。本站在未做特别说明的情况下所使用的PHP与MySQL连接,和查询语句等均使用原始语句方法如mysql_query等,目的就是为了让读者能够直观的知晓数据的传输查询。

最后附上MYSQL表结构:

CREATE TABLE `catalog` ( 
  `id` mediumint(6) NOT NULL auto_increment, 
  `cid` mediumint(6) NOT NULL default '0'
  `title` varchar(50) NOT NULL
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 


以上是关于JS二级联动下拉菜单,把第二个菜单里的值传出的主要内容,如果未能解决你的问题,请参考以下文章

asp有两个下拉菜单,是二级联动菜单

asp 下拉框 二级联动

jQuery+PHP+MySQL实现二级联动下拉菜单

(实用篇)jQuery+PHP+MySQL实现二级联动下拉菜单

asp 二级联动菜单

asp 下拉菜单的二级联动