可以把它做成小插件的形式,以后需要,可以隨時調
來看一下怎么來做
先來寫個div然后,再引入js包
<!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>無標題文檔</title> <script src="jquery-1.11.2.min.js"></script> <script src="sanji.js"></script> </head> <body> <div id="sanji"> </div> </body> </html>
引入的js文件,取名為sanji.js
然后來看看js文件是怎么寫的
$(document).ready(function(e) { //向DIV里面扔三個下拉 var str = "<select id='sheng'></select><select id='shi'></select><select id='qu'></select>"; $("#sanji").html(str); FillSheng(); FillShi(); FillQu(); //選中項變化 $("#sheng").change(function(){ FillShi(); FillQu(); }) $("#shi").change(function(){ FillQu(); }) }); //填充省的方法 function FillSheng() { var pcode = "0001"; //父級代號 $.ajax({ async:false, url:"chuli.php", data:{pcode:pcode}, type:"POST", dataType:"TEXT", success: function(data){ //回調函數 var hang = data.split("|"); //根據行與行的分隔符來拆 var str = ""; for(var i=0;i<hang.length;i++) { var lie = hang[i].split("^"); //列與列的分隔符來拆 str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>"; //中間顯示地區名稱 } $("#sheng").html(str); //把顯示的地區名稱填充進去 } }); } //填充市的方法 function FillShi() { var pcode = $("#sheng").val(); $.ajax({ async:false, url:"chuli.php", data:{pcode:pcode}, type:"POST", dataType:"TEXT", success: function(data){ var hang = data.split("|"); var str = ""; for(var i=0;i<hang.length;i++) { var lie = hang[i].split("^"); str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>"; } $("#shi").html(str); } }); } //填充區的方法 function FillQu() { var pcode = $("#shi").val(); $.ajax({ url:"chuli.php", data:{pcode:pcode}, type:"POST", dataType:"TEXT", success: function(data){ var hang = data.split("|"); var str = ""; for(var i=0;i<hang.length;i++) { var lie = hang[i].split("^"); str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>"; } $("#qu").html(str); } }); }
只要寫出一個來,其他兩個和上面一個原理是一樣的
再來看處理頁面,三項用一個處理頁面
看一下處理頁面的代碼
<?php include("DBDA.class.php"); $db = new DBDA(); $pcode = $_POST["pcode"]; $sql = "select * from chinastates where parentareacode='{$pcode}'"; echo $db->StrQuery($sql);
數據庫的地區表是chinastates
根據傳過來的父級代號來查所有數據
最后運行起來的效果是這樣的
來看一下數據庫的內容
數據庫內容很多,三級聯動里的地區名稱都在里面,采用的是代號副代號的方式
比如說北京吧,北京的代號是11,它下面的北京市副代號就11, 北京市的主代號是1101,北京市下面的地區副代號就是1101,調地區的時候可以根據主代號查詢和它相同的副代號,就能查詢出來