jquery select選中表單特效三級聯動

JoeYoung發表於2015-07-09

好久沒發帖了,今天發一個jquery select的表單三級聯動,希望能對有需要的朋友有點幫助。

js程式碼,當然還要加上jquery的包,應該都有的,這裡就不發了。

<script type="text/javascript">
var threeSelectData={
	
	"選擇頻道":{
		val:"",
		items:{
			"二級子選單":{
				val:"",
				items:{
					"三級子選單":""
				}
			}
		}
	},
	
	"jquery特效":{
		val:"jquery",
		items:{
			"jquery圖片特效":{
				val:"jqpic",
				items:{
					"jquery圖片切換":"jqpic-01",
					"jquery幻燈片":"jqpic-02",
					"jquery圖片滾動":"jqpic-03",
					"jquery圖片放大":"jqpic-04",
					"jquery廣告":"jqpic-05",
					"jquery圖片其它":"jqpic-06"
				}
			},
			
			"jquery導航選單":{
				val:"jqnav",
				items:{
					"jquery動畫選單":"jqnav-01",
					"jquery下拉選單":"jqnav-02",
					"jquery手風琴選單":"jqnav-03",
					"jquery導航其它":"jqnav-04"
				}
			},
			
			"jquery選項卡特效":{
				val:"jqtab",
				items:{
					"jquery選項卡切換":"jqtab-01",
					"jquery滑動選項卡":"jqtab-02"
				}
			},
			
			"jquery文字特效":{
				val:"jqfont",
				items:{
					"jquery文字滾動":"jqfont-01",
					"jquery文字切換":"jqfont-02",
					"jquery文字其它":"jqfont-03"
				}
			},
			
			"jquery表單特效":{
				val:"jqform",
				items:{
					"jquery表單驗證":"jqform-01",
					"jquery表單美化":"jqform-02",
					"jquery表單其它":"jqform-03"
				}
			},
			
			"jquery滾動條美化":{
				val:"jqscroll",
				items:{}
			},
			
			"jquery評分,進度條,日期時間":{
				val:"jqrate",
				items:{}
			},
			
			"jquery提示框,彈出層,浮動層":{
				val:"jqdiv",
				items:{}
			},
			
			"jquery其它特效":{
				val:"jqother",
				items:{}
			}
			
		}
	},
	
	"js特效":{
		val:"js",
		items:{
			
			"js圖片特效":{
				val:"jspic",
				items:{
					"js圖片切換":"jspic-01",
					"js幻燈片":"jspic-02",
					"js圖片滾動":"jspic-03",
					"js圖片放大":"jspic-04",
					"js廣告":"jspic05",
					"js圖片其它":"jspic-06"
				}
			},
			
			"js導航選單":{
				val:"jsnav",
				items:{
					"js動畫選單":"jsnav-01",
					"js下拉選單":"jsnav-02",
					"js手風琴選單":"jsnav-03",
					"js導航其它":"jsnav-04"
				}
			},
			
			"js選項卡特效":{
				val:"jstab",
				items:{
					"js選項卡切換":"jstab-01",
					"js滑動選項卡":"jstab-02"
				}
			},
			
			"js文字特效":{
				val:"jsfont",
				items:{
					"js文字滾動":"jsfont-01",
					"js文字切換":"jsfont-02",
					"js文字其它":"jsfont-03"
				}
			},
			
			"js表單特效":{
				val:"jsform",
				items:{
					"js表單驗證":"jsform-01",
					"js表單美化":"jsform-02",
					"js表單其它":"jsform-03"
				}
			},
			
			"js滾動條美化":{
				val:"js-scroll",
				items:{}
			},
			
			"js評分,進度條,日期時間":{
				val:"js-rate",
				items:{}
			},
			
			"js提示框,彈出層,浮動層":{
				val:"js-div",
				items:{}
			},
			
			"js其它特效":{
				val:"js-other",
				items:{}
			}
			
		}
	},
	
	"flash特效":{
		val:"flash",
		items:{
			
			"圖片特效":{
				val:"flash-pic",
				items:{}
			},
			
			"導航選單":{
				val:"flash-nav",
				items:{}
			},
			
			"文字特效":{
				val:"flash-font",
				items:{}
			},
			
			"其它":{
				val:"flash-other",
				items:{}
			}
			
		}
	},
	
	"div+css教程":{
		val:"divcss",
		items:{
			
			"div+css佈局":{
				val:"divcss-layout",
				items:{}
			},
			
			"div+css選單":{
				val:"divcss-nav",
				items:{}
			},
			
			"css3教程":{
				val:"div-css3",
				items:{}
			},
			
			"其它":{
				val:"divcss-other",
				items:{}
			}
			
		}
	},
	
	"html5教程":{
		val:"html5",
		items:{
			
			"html5特效":{
				val:"html5-tx",
				items:{}
			},
			
			"html5圖表":{
				val:"html5-map",
				items:{}
			},
			
			"其它":{
				val:"html5-other",
				items:{}
			}
			
		}
	}
	

};

var defaults = {
	s1:'mainselect',
	s2:'midselect',
	s3:'backselect'
};

$(function(){
	threeSelect(defaults);
});

function threeSelect(config){
	var $s1=$("#"+config.s1);
	var $s2=$("#"+config.s2);
	var $s3=$("#"+config.s3);
	var v1=config.v1?config.v1:null;
	var v2=config.v2?config.v2:null;
	var v3=config.v3?config.v3:null;
	$.each(threeSelectData,function(k,v){
		appendOptionTo($s1,k,v.val,v1);
	});
	
	$s1.change(function(){
		$s2.html("");
		$s3.html("");
		if(this.selectedIndex==-1)
		return;
		
		var s1_curr_val = this.options[this.selectedIndex].value;
		
		$.each(threeSelectData,function(k,v){
			if(s1_curr_val==v.val){
				if(v.items){
					$.each(v.items,function(k,v){
						appendOptionTo($s2,k,v.val,v2);
					});
				}
			}
		});
	
		if($s2[0].options.length==0){
			appendOptionTo($s2,"...","",v2);
		}
		
		$s2.change();
		
	}).change();
	
	$s2.change(function(){
		$s3.html("");
		var s1_curr_val = $s1[0].options[$s1[0].selectedIndex].value;
		if(this.selectedIndex==-1)
		return;
		
		var s2_curr_val = this.options[this.selectedIndex].value;
		
		$.each(threeSelectData,function(k,v){
			if(s1_curr_val==v.val){
				if(v.items){
					$.each(v.items,function(k,v){
						if(s2_curr_val==v.val){
							$.each(v.items,function(k,v){
								appendOptionTo($s3.show(),k,v,v3);
							});
						}
					});
					
					if($s3[0].options.length==0){
						appendOptionTo($s3.hide(),"...","",v3);
					}
				}
			}
		});
		
	}).change();
	
	function appendOptionTo($o,k,v,d){

		var $opt=$("<option>").text(k).val(v);
		
		if(v==d){
			$opt.attr("selected", "selected")
		}
		$opt.appendTo($o);
	}
	
}
</script>

 html程式碼很簡單:

<select id="mainselect" name="mainselect" style="width:120px;"></select>
<select id="midselect" name="midselect" style="width:220px;"></select>
<select id="backselect" name="backselect" style="width:160px;"></select>

 

相關文章