基于JQUERY的多級(jí)聯(lián)動(dòng)代碼
(function($){
$.fn.doselectmore = function(settings) {
var dfop ={
namekey: "name",
pnamekey: "name",
idkey: "id",
selectname:"sel",
method: "POST",
datatype: "json",
param:{},
pval:null,
chckval:null,
chckvalarry:null,
pname:false,
nname:false,
vl:0,
url: false,
data: false
};
$.extend(dfop, settings);
// alert(eobj(dfop));
var me = $(this);
if(!dfop.nname){
dfop.nname = (dfop.selectname+(dfop.vl+1));
}
if((!dfop.pname)&&dfop.vl>0){
dfop.pname = dfop.selectname+(dfop.vl-1);
}
if(!dfop.data){
if (dfop.url) {
var param = {};
$.ajax({
type: dfop.method,
url: dfop.url,
data: dfop.param,
dataType: dfop.datatype,
success: function(data){
dfop.data=data;
selectmorebuilder(me,dfop);
},
error:(function(request,status,err){
var errText = request.responseText;
var ErrMessage = "頁面出現(xiàn)"+request.status+"錯(cuò)誤信息,\n";
ErrMessage += "錯(cuò)誤內(nèi)容為:"+request.statusText+"\n"+errText.substring(errText.indexOf("<pre>")+5,errText.indexOf("</pre>"));
alert(ErrMessage);
})
});
}
}else{
selectmorebuilder(me,dfop);
}
function selectmorebuilder(thisme,df) {
if(df.chckval!=null&&df.chckvalarry==null){
var pid=df.chckval;
var k=1;
df.chckvalarry = new Array();
df.chckvalarry.push(pid);
while(k>0){
k=0;
$.each(df.data, function(i, item){
if(item[df.idkey]==pid&&item[df.pnamekey]!=df.pval){
pid=item[df.pnamekey];
df.chckvalarry.unshift(pid);
k++;
}
});
}
}
// alert(eobj(df.chckvalarry));
var select = $("<select></select>");
select.attr({
name:df.selectname+dfop.vl,
id:df.selectname+dfop.vl,
nname:df.nname,
pname:df.pname,
vl:df.vl
});
var sdiv = null;
if (dfop.vl == 0) {
sdiv = $("<div></div>");
thisme.after(sdiv).remove();
sdiv.append("<input type=\"hidden\" name=\"" + df.selectname + "\">");
sdiv.append(select);
sdiv.get(0).t=df;
}else{
thisme.removeselectmore();
sdiv = $("input[name="+df.selectname+"]").parent();
sdiv.append(select);
}
select.empty();
var counti = 0;
$.each(df.data, function(i, item){
if(item[df.pnamekey]==df.pval){
select.append("<option value='"+item[df.idkey]+"'>"+item[df.namekey]+"</option>");
counti++;
}
});
if (counti == 0) {
select.remove();
}
else {
select.change(function(){
var nselect = $("#" + $(this).attr("nname"));
if (nselect.length == 0) {
nselect = $("<select></select>");
sdiv.append(nselect);
}
nselect.doselectmore({
namekey: df.namekey,
pnamekey: df.pnamekey,
idkey: df.idkey,
selectname: df.selectname,
param: df.param,
pval: $(this).val(),
vl: df.vl + 1,
chckvalarry:sdiv.get(0).t.chckvalarry,
data: df.data
});
});
if(df.chckvalarry!=null){
if(df.chckvalarry.length>=df.vl)
select.val(df.chckvalarry[df.vl]);
}
if(df.vl==1&&df.chckvalarry!=null&&df.chckvalarry[1]!=select.val()){
var ddf = sdiv.get(0).t;
ddf.chckvalarry=null;
ddf.chckval=null;
sdiv.get(0).t=ddf;
}
select.change();
$("input[type=hidden][name="+df.selectname+"]").val($("input[type=hidden][name="+df.selectname+"]").getselectmoreval());
}
}
};
$.fn.getselectmoreval = function(){
var me = $(this);
if(me.size()==0) return;
var sdiv = me.parent();
if(sdiv.size()==0) return;
var df = sdiv.get(0).t;
var nselect = $("#" + df.selectname+df.vl);
var v = null;
while(nselect.size()>0){
v = nselect.val();
nselect = $("#" +nselect.attr("nname"));
}
return v;
};
$.fn.setselectmoreval = function(idv){
var me = $(this);
if(me.size()==0) return;
var sdiv = me.parent();
if(sdiv.size()==0) return;
var df = sdiv.get(0).t;
df.chckval=idv;
if(idv!=null){
var pid=df.chckval;
var k=1;
df.chckvalarry = new Array();
df.chckvalarry.push(pid);
while(k>0){
k=0;
$.each(df.data, function(i, item){
if(item[df.idkey]==pid&&item[df.pnamekey]!=df.pval){
pid=item[df.pnamekey];
df.chckvalarry.unshift(pid);
k++;
}
});
}
}
sdiv.get(0).t=df;
var nselect = $("#" + df.selectname+df.vl);
nselect.val(df.chckvalarry[0]);
nselect.change();
};
$.fn.removeselectmore = function(){
if($(this).attr("nname")!=null){
$("#"+$(this).attr("nname")).removeselectmore();
}
$(this).remove();
};
})(jQuery);
help.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="../../common.js" type="text/javascript"></script>
<script src="../../jquery/jquery-1.3.2.min.js" type="text/javascript"/></script>
<link type="text/css" rel="stylesheet" href="../SyntaxHighlighter/Styles/SyntaxHighlighter.css"></link>
<script language="javascript" src="../SyntaxHighlighter/Scripts/shCore.js"></script>
<script language="javascript" src="../SyntaxHighlighter/Scripts/shBrushJScript.js"></script>
<script language="javascript" src="../SyntaxHighlighter/Scripts/shBrushXml.js"></script>
<script type="text/javascript">
$(document).ready(function(){
dp.SyntaxHighlighter.ClipboardSwf = '../SyntaxHighlighter/Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
});
</script>
<title>Insert title here</title>
</head>
<body>
<b>方法名:</b>doselectmore<br/>
<b>用途:</b>實(shí)例化一個(gè)對(duì)象為多選框<br/>
<b>例子:</b>html
<pre name="code" class="html">
<!--head-->
<script src="jquery.select.more.js" type="text/javascript"/></script>
<!--body-->
<input type="text" name="illegbasinfo">
</pre>
js:
<pre name="code" class="js">
/**
一下※為必填項(xiàng),★為二選一,?為不是必須
※namekey: 數(shù)據(jù)類型顯示名稱,
※pnamekey: 數(shù)據(jù)上級(jí)主鍵名稱,
※idkey: 數(shù)據(jù)主鍵名稱,
※selectname: 選擇框名稱,
※pval:第一級(jí)別上級(jí)節(jié)點(diǎn)值,
?chckval:默認(rèn)選擇,
★url: false,
?param:url使用時(shí)傳入?yún)?shù),
★data: false
**/
$("input[name=illegbasinfo]").doselectmore({
url:'../../../abc/dic/illbasinfo/loadall.do',
pval:0,
namekey: "illegbasinfo",
pnamekey: "parillegbasid",
idkey: "illegbasinfoid",
selectname:"illegbasinfo"
});
</pre>
<b>方法名:</b>doselectmore<br/>
<b>用途:</b>得到選中對(duì)象值<br/>
<b>例子:</b>js:
<pre name="code" class="js">
$("input[name=test1]").click(function(){
alert($("input[name=illegbasinfo]").getselectmoreval());
});
</pre>
<b>方法名:</b>setselectmoreval(val)<br/>
<b>用途:</b>為多選框設(shè)置值<br/>
<b>例子:</b>js:
<pre name="code" class="js">
$("input[name=test2]").click(function(){
$("input[name=illegbasinfo]").setselectmoreval(347);
});
</pre>
</body>
</html>
- 基于JQuery的日期聯(lián)動(dòng)實(shí)現(xiàn)代碼
- jquery select操作的日期聯(lián)動(dòng)實(shí)現(xiàn)代碼
- jquery+json 通用三級(jí)聯(lián)動(dòng)下拉列表
- 簡單實(shí)用jquery版三級(jí)聯(lián)動(dòng)select示例
- jquery 實(shí)現(xiàn)二級(jí)/三級(jí)/多級(jí)聯(lián)動(dòng)菜單的思路及代碼
- JQuery打造省市下拉框聯(lián)動(dòng)效果
- jquery ajax實(shí)現(xiàn)下拉框三級(jí)無刷新聯(lián)動(dòng),且保存保持選中值狀態(tài)
- jQuery 聯(lián)動(dòng)日歷實(shí)現(xiàn)代碼
- Jquery實(shí)現(xiàn)無刷新DropDownList聯(lián)動(dòng)實(shí)現(xiàn)代碼
- jQuery制作簡潔的多級(jí)聯(lián)動(dòng)Select下拉框
- 用Jquery實(shí)現(xiàn)多級(jí)下拉框無刷新的聯(lián)動(dòng)
- jQuery 下拉列表 二級(jí)聯(lián)動(dòng)插件分享
- jQuery實(shí)現(xiàn)日期聯(lián)動(dòng)效果實(shí)例
- ld 基于jquery多級(jí)聯(lián)動(dòng)插件 V1.2(明河作品)
- chained 基于jQuery多級(jí)聯(lián)動(dòng)插件
相關(guān)文章
jquery中在頁面加載完成后執(zhí)行某個(gè)方法
這篇文章主要介紹了jquery中在頁面加載完成后執(zhí)行某個(gè)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10jQuery學(xué)習(xí)筆記之基礎(chǔ)中的基礎(chǔ)
本文是jQuery學(xué)習(xí)筆記系列文章的第一篇,跟大多數(shù)開篇文章一樣,我們來講解下jQuery最基礎(chǔ)的東西,希望大家能夠喜歡。2015-01-01Jquery+Ajax+xml實(shí)現(xiàn)中國地區(qū)選擇三級(jí)聯(lián)動(dòng)菜單效果(推薦)
下面小編就為大家?guī)硪黄狫query+Ajax+xml實(shí)現(xiàn)中國地區(qū)選擇三級(jí)聯(lián)動(dòng)菜單效果(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06jquery中event對(duì)象屬性與方法小結(jié)
本篇文章主要是對(duì)jquery中的event對(duì)象屬性與方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12Jquery實(shí)現(xiàn)列表(隔行換色,全選,鼠標(biāo)滑過當(dāng)前行)效果實(shí)例
Jquery實(shí)現(xiàn)列表(隔行換色,全選,鼠標(biāo)滑過當(dāng)前行)效果實(shí)例,需要的朋友可以參考一下2013-06-06zTree異步加載展開第一級(jí)節(jié)點(diǎn)的實(shí)現(xiàn)方法
這篇文章主要介紹了zTree異步加載展開第一級(jí)節(jié)點(diǎn)的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-09-09jquery中ajax調(diào)用json數(shù)據(jù)的使用說明
jquery里提供了便捷的ajax運(yùn)用,下面總結(jié)我自己的一些經(jīng)驗(yàn)2011-03-03利用jquery實(shí)現(xiàn)驗(yàn)證輸入的是否是數(shù)字、小數(shù),包含保留幾位小數(shù)
本文主要介紹了利用jquery實(shí)現(xiàn)驗(yàn)證輸入的是否是數(shù)字、小數(shù),包含保留幾位小數(shù),代碼清晰,容易理解。有需要的朋友可以參考下2016-12-12