jQuery結(jié)合PHP+MySQL實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)下拉列表[實(shí)例]
實(shí)現(xiàn)原理:根據(jù)省份值的變動(dòng),通過(guò)jQuery把sf_id傳給后臺(tái)php文件處理,php通過(guò)查詢(xún)MySQl數(shù)據(jù)庫(kù),得到對(duì)應(yīng)的地市名,并返回JSON數(shù)據(jù)給前端處理,即實(shí)現(xiàn)聯(lián)動(dòng)效果!
為便于講解,這里直接給出省份:河南省(sf_id=1) 浙江省(sf_id=2),而地市和學(xué)生信息則分別建立兩張數(shù)據(jù)表!編碼方式均為:utf8!新建數(shù)據(jù)庫(kù)并執(zhí)行以下SQL語(yǔ)句!
/* 地市表 */
create TABLE IF NOT EXISTS `dishi`(
`ds_id` int(3) auto_increment not null primary key,
`sf_id` int(3) not null default '0',
`ds_name` varchar(50) not null
);
/* 學(xué)生表 */
create TABLE IF NOT EXISTS `xuesheng`(
`xs_id` int(3) auto_increment not null primary key,
`ds_id` int(3) not null default '0',
`xs_name` varchar(50) not null
);接著搭個(gè)前臺(tái)架子:
<table border="0" width="100%">
<tr>
<td width=100>省份</td>
<td>
<select name="sf_id" id="sf_id" title="選擇省份">
<option value="1">河南省</option>
<option value="2">浙江省</option>
</select>
</td>
</tr>
<tr>
<td>地市</td>
<td>
<select name="ds_id" id="ds_id" title="選擇地市">
</select>
</td>
</tr>
<tr>
<td>學(xué)生姓名</td>
<td><input type=text maxlength=20 name="xs_name" value=""></td></tr>
</table>
接著就是jQuery部分,詳解可看代碼后注釋部分:
<script language="JavaScript">
function getVal(){
$.getJSON("select.php",{sf_id:$("#sf_id").val()},function(json){
var ds_id = $("#ds_id");
$("option",ds_id).remove(); //清空原有的選項(xiàng),也可使用 ds_id.empty();
$.each(json,function(index,array){
var option = "<option value='"+array['ds_id']+"'>"+array['ds_name']+"</option>";
ds_id.append(option);
});
});
}
//下面是頁(yè)面加載時(shí)自動(dòng)執(zhí)行一次getVal()函數(shù)
$().ready(function(){
getVal();
$("#sf_id").change(function(){//省份部分有變動(dòng)時(shí),執(zhí)行g(shù)etVal()函數(shù)
getVal();
});
});
</script>
其中的select.php就是關(guān)鍵部分了,此文件接收前臺(tái)通過(guò)$.getJSON方法傳遞過(guò)來(lái)的參數(shù) sf_id,然后select.php根據(jù)省份sf_id獲取對(duì)應(yīng)的地市數(shù)據(jù),再返回JSON數(shù)據(jù),前臺(tái)通過(guò)jQuery將JSON數(shù)據(jù)進(jìn)行處理,寫(xiě)入<option>,即完成了聯(lián)動(dòng)效果!
$sf_id = $_GET["sf_id"];
if(isset($sf_id)){
$q=mysql_query("select * from dishi where sf_id = $sf_id");
while($row=mysql_fetch_array($q)){
$select[] = array("ds_id"=>$row['ds_id'],"ds_name"=>urlencode($row['ds_name']));
}
echo urldecode(json_encode($select));
}
其中的urlencode()、urldecode()函數(shù)為防止中文數(shù)據(jù)庫(kù)內(nèi)容亂碼!這里還需要注意的是,select.php不得再有其它數(shù)據(jù)返回,免得JSON返回錯(cuò)誤!
最后補(bǔ)充一下,有童鞋問(wèn)這效果在添加學(xué)生信息的時(shí)候能方便使用,如果有傳遞過(guò)來(lái)的學(xué)生信息需要編輯時(shí),不能直接顯示要編輯的學(xué)生所處的地市!這里就需要加個(gè)判斷了:
首先將上面的:<select name="ds_id" id="ds_id" title="選擇地市"> </select>部分做個(gè)判斷
<select name="ds_id" id="ds_id" title="選擇地市">
<?php if( isset($_GET['ds_id']) ){//返回要編輯的學(xué)生所屬的地市
$sql="SELECT * FROM dishi WHERE ds_id=".$ds_id;
$resultds=mysql_query($sql,$conn);
while($listds=mysql_fetch_array($resultds)){ ?>
<option value="<?php echo $listds['ds_id'] ?>" <?php if( $listds['ds_id']==$ds_id ){ echo 'selected="selected"'; } ?> name="ds_id"><?php echo $listds['ds_name'] ?></option>
<?php } ?>
<?php } ?>
</select>
然后在頁(yè)面加載時(shí),首次執(zhí)行g(shù)etVal()函數(shù)前做判斷,說(shuō)明看注釋部分:
$().ready(function(){
//當(dāng)$ds_id不為空,表示加載修改狀態(tài)的表單,此時(shí)就不能在頁(yè)面加載時(shí)立即調(diào)用getVal()函數(shù),以避免無(wú)法顯示要修改的賬目所在的收支分類(lèi)
<?php if( empty($ds_id) ){ ?>//當(dāng)$ds_id為空,表示加載添加表單,此時(shí)要在頁(yè)面加載時(shí)立即調(diào)用getVal()函數(shù),以顯示當(dāng)前收支類(lèi)型的子分類(lèi)
getVal();
<?php } ?>
$("#sf_id").change(function(){
getVal();
});
});
好了,差不多結(jié)束吧!
- jquery+json 通用三級(jí)聯(lián)動(dòng)下拉列表
- jQuery實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)下拉列表查詢(xún)框
- jQuery 下拉列表 二級(jí)聯(lián)動(dòng)插件分享
- jQuery ajax+PHP實(shí)現(xiàn)的級(jí)聯(lián)下拉列表框功能示例
- 基于jquery的二級(jí)聯(lián)動(dòng)菜單實(shí)現(xiàn)代碼
- 簡(jiǎn)單實(shí)用jquery版三級(jí)聯(lián)動(dòng)select示例
- JQuery實(shí)現(xiàn)級(jí)聯(lián)下拉框效果實(shí)例講解
- jquery 實(shí)現(xiàn)二級(jí)/三級(jí)/多級(jí)聯(lián)動(dòng)菜單的思路及代碼
- 省市區(qū)三級(jí)聯(lián)動(dòng)jquery實(shí)現(xiàn)代碼
- 基于jquery的無(wú)限級(jí)聯(lián)下拉框js插件
- jQuery實(shí)現(xiàn)動(dòng)態(tài)生成年月日級(jí)聯(lián)下拉列表示例
相關(guān)文章
jquery-file-upload 文件上傳帶進(jìn)度條效果
這篇文章主要介紹了jquery-file-upload 文件上傳帶進(jìn)度條效果,代碼分為html部分css部分和js部分,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11asp.net中oracle 存儲(chǔ)過(guò)程(圖文)
存儲(chǔ)過(guò)程是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的sql語(yǔ)句集,經(jīng)過(guò)編譯存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它,下面小編給大家介紹asp.net中oracle存儲(chǔ)過(guò)程,需要的朋友可以參考下2015-08-08jQuery setTimeout傳遞字符串參數(shù)報(bào)錯(cuò)的解決方法
這篇文章主要介紹了jQuery setTimeout傳遞字符串參數(shù)報(bào)錯(cuò)的解決方法,需要的朋友可以參考下2014-06-06BootStrap iCheck插件全選與獲取value值的解決方法
這篇文章主要介紹了BootStrap iCheck插件全選與獲取value值的解決方法,解決方法其實(shí)很簡(jiǎn)單,下面小編給大家分享下這方面的知識(shí)2016-08-08Jquery給當(dāng)前頁(yè)或者跳轉(zhuǎn)后頁(yè)面的導(dǎo)航欄添加選中后樣式的實(shí)例
下面小編就為大家?guī)?lái)一篇Jquery給當(dāng)前頁(yè)或者跳轉(zhuǎn)后頁(yè)面的導(dǎo)航欄添加選中后樣式的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12JQuery點(diǎn)擊行tr實(shí)現(xiàn)checkBox選中的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇JQuery點(diǎn)擊行tr實(shí)現(xiàn)checkBox選中的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05jQuery實(shí)現(xiàn)動(dòng)態(tài)控制頁(yè)面元素的方法分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)控制頁(yè)面元素的方法,結(jié)合實(shí)例形式分析了jQuery事件響應(yīng)及頁(yè)面元素動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12jQuery中checkbox反復(fù)調(diào)用attr(''checked'', true/false)只有第一次生效的解決方法
這篇文章主要介紹了jQuery中checkbox反復(fù)調(diào)用attr('checked', true/false)只有第一次生效的解決方法,通過(guò)使用prop方法代替attr方法來(lái)解決此問(wèn)題,需要的朋友可以參考下2016-11-11