shawl.qiu javascript 表单列表框联动类 v1.2

来源:互联网 发布:查看端口状态 编辑:程序博客网 时间:2024/05/16 12:37

shawl.qiu javascript 表单列表框联动类 v1.2 

 说明:
 本次升级主要为增加两个功能, 可以自定义一个项, 和是否显示附加项...
 1.1 版本没发布, 主要为除虫.
 1.2 版本基本上没虫.
 
文章相关信息:
主题: shawl.qiu javascript 表单列表框联动类 v1.2
发表者: sq
电子邮件: shawl.qiu@gmail.com
QQ: 557091
MSN: shawl.qiu@gmail.com
Blog: http://blog.csdn.net/btbtd
发表日期: 2007-1-12 22:01:25
来源引用: shawl.qiu asp/jscript 个人源代码管理系统
 
 目录:
1. 使用手册
 2. select() 类源码
 
1. 使用手册
  1. shawl.qiu framework javascript client-side
  2. ---/------------------------------------------------------------------------------
  3. 三级联动 -> 添加自定义项
  4.    var sle=new select();
  5.        sle.source=document.getElementById('catAllStr').innerHTML;                    // 源字串
  6.     sle.delimiter='##';                 // 列定界符
  7.     sle.marker='@';                    // 行分隔符
  8.     sle.addition=true;
  9.     sle.custom='请选择:all';
  10.     sle.idBase='level';                // 标签 ID 基准字串, 如: id1, id2. 其中的 id 就是基准字符.
  11.     sle.defaultSelect='all,all,all';      // 默认选中项, 以值为准: 如 2,21,211. 请不要带空格.
  12.     sle.queryString='cat1id,cat2id,cat3id'; // URL 栏查询串, 根据 URL 查询 ID 自动选中列表框项.
  13.         sle.getItem(); // 执行本程序
  14.         sle=null
  15.  
  16. ---/------------------------------------------------------------------------------
  17. 三级联动 -> 添加附加项
  18.    var sle=new select();
  19.        sle.source=document.getElementById('catAllStr').innerHTML;                    // 源字串
  20.     sle.delimiter='##';                 // 列定界符
  21.     sle.marker='@';                    // 行分隔符
  22.     sle.addition=true;
  23.     sle.idBase='level';                // 标签 ID 基准字串, 如: id1, id2. 其中的 id 就是基准字符.
  24.     sle.defaultSelect='1,1,0';      // 默认选中项, 以值为准: 如 2,21,211. 请不要带空格.
  25.     sle.queryString='cat1id,cat2id,cat3id'; // URL 栏查询串, 根据 URL 查询 ID 自动选中列表框项.
  26.         sle.getItem(); // 执行本程序
  27.         sle=null
  28.    }
  29. ---/------------------------------------------------------------------------------
  30. 三级联动
  31. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  32. <html xmlns="http://www.w3.org/1999/xhtml">
  33. <head>
  34. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  35. <title>shawl.qiu template</title>
  36. <script type='text/javascript' src='/sqFwJsCs/default.js'></script>
  37. <script type="text/javascript">
  38. //<![CDATA[
  39.  /*--------------------------begin sqFwJsCs--------------------------------*/
  40.  //shawl.qiu framework javascript client-side
  41.  /*----------------global--------------------*/
  42.  //im.help.self(true);
  43.  //im.help.source(true);
  44.  //-
  45.  //im.readme();
  46.  //-
  47.  //im.find('default.js',true);
  48.  //im.find(null,true);
  49.  /*----------------object--------------------*/
  50.  //im.go('object.default');
  51.  //im.help('object.default', true);
  52.  //-
  53.  /*----------------string--------------------*/
  54.  //im.go('string.default');
  55.  //im.help('string.default', true);
  56.  //-
  57.  //im.go('string.format');
  58.  //im.help('string.format', true);
  59.  //-
  60.  //im.go('string.random');
  61.  //im.help('string.random', true);
  62.  //-
  63.  //im.go('string.highlight');
  64.  //im.help('string.highlight', true);
  65.  //im.help('string.highlight');
  66.  //-
  67.  /*----------------check---------------------*/
  68.  //im.go('check.default');
  69.  //im.help('check.default', true);
  70.  //-
  71.  /*----------------array---------------------*/
  72.  //im.go('array.default');
  73.  //im.help('array.default', true);
  74.  //-
  75.  /*----------------dom---------------------*/
  76.  //im.go('dom.keywords');
  77.  //im.help('dom.keywords', true);
  78.  //-
  79.  //im.go('dom.default');
  80.  //im.help('dom.default', true);
  81.  /*----------------image---------------------*/
  82.  //im.go('image.default');
  83.  //im.help('image.default', true);
  84.  //-
  85.  /*----------------form---------------------*/
  86.  //im.go('form.default');
  87.  //im.help('form.default', true);
  88.  //-
  89.  im.go('form.select');
  90.  //im.help('form.select', true)
  91.  //-
  92.  //im.go('form.validate');
  93.  //im.help('form.validate', true);
  94.  /*----------------utility---------------------*/
  95.  //im.go('utility.default');
  96.  //im.help('utility.default', true);
  97.  //-
  98.  /*----------------multi options-------------*/
  99.  //im.go('string.default|string.random');
  100.  //-
  101.  //im.help('string.default|string.random', true);
  102.  /*--------------------------end sqFwJsCs----------------------------------*/
  103. //]]>
  104. </script>
  105. </script>
  106. <script type="text/javascript">
  107. //<![CDATA[
  108.  var str='1##默认类##1##测试类 cat2##1##测试类 cat3##@<br/>';
  109.    onload=function(){
  110.    var sle=new select();
  111.      sle.source=str;                    // 源字串
  112.    sle.delimiter='##';                 // 列定界符
  113.    sle.marker='@';                    // 行分隔符
  114.    sle.idBase='level';                // 标签 ID 基准字串, 如: id1, id2. 其中的 id 就是基准字符.
  115.    sle.defaultSelect='2,21';      // 默认选中项, 以值为准: 如 2,21,211. 请不要带空格.
  116.    sle.queryString='id,idsub'; // URL 栏查询串, 根据 URL 查询 ID 自动选中列表框项.
  117.       sle.getItem(); // 执行本程序
  118.       sle=null;
  119.  }
  120. //]]>
  121. </script>
  122. </head>
  123. <body>
  124. <select name='cat1' id='level1'></select>
  125. <select name='cat2' id='level2'></select>
  126. <select name='cat3' id='level3'></select>
  127. </body>
  128. </html>
  129. ---/------------------------------------------------------------------------------
  130. 二级联动
  131. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  132. <html xmlns="http://www.w3.org/1999/xhtml">
  133. <head>
  134. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  135. <title>shawl.qiu template</title>
  136. <script type='text/javascript' src='/sqFwJsCs/default.js'></script>
  137. <script type="text/javascript">
  138.  im.go('form.select');
  139.  im.help('form.select', true);
  140. //]]>
  141. </script>
  142. <script type="text/javascript">
  143. //<![CDATA[
  144.  var str='1##cat 1##11##11cat ##@1##cat 1##12##12cat ##@1##cat 1##13##13cat ##@2##cat 2##21##21cat ##@2##cat 2##22##22cat ##@2##cat 2##23##23cat ##@3##cat 3##31##31cat ##@3##cat 3##32##32cat ##@3##cat 3##33##33cat ##@';
  145.    onload=function(){
  146.    var sle=new select();
  147.      sle.source=str;                    // 源字串
  148.    sle.delimiter='##';                 // 列定界符
  149.    sle.marker='@';                    // 行分隔符
  150.    sle.idBase='level';                // 标签 ID 基准字串, 如: id1, id2. 其中的 id 就是基准字符.
  151.    sle.defaultSelect='2,21';      // 默认选中项, 以值为准: 如 2,21,211. 请不要带空格.
  152.    sle.queryString='id,idsub'; // URL 栏查询串, 根据 URL 查询 ID 自动选中列表框项.
  153.       sle.getItem(); // 执行本程序
  154.       sle=null;
  155.  }
  156. //]]>
  157. </script>
  158. </head>
  159. <body>
  160. <select name='super' id='level1'></select>
  161. <select name='sub' id='level2'></select>
  162. <br/><a href="?">back</a><br/>
  163. <a href="?id=1&idsub=12">id=1&idsub=12</a><br/>
  164. <a href="?id=2&idsub=21">id=2&idsub=21</a><br/>
  165. <a href="?id=3&idsub=32">id=3&idsub=32</a><br/>
  166. </body>
  167. </html>
 2. select() 类源码
  1. /*
  2.  onload=function(){
  3.    var sle=new select();
  4.      sle.source=str;                    // 源字串
  5.    sle.delimiter='##';                 // 列定界符
  6.    sle.marker='@';                    // 行分隔符
  7.    sle.idBase='level';                // 标签 ID 标准字串, 如: id1, id2. 其中的 id 就是基准字符.
  8.    sle.defaultSelect='2,21';      // 默认选中项, 以值为准: 如 2,21,211. 请不要带空格.
  9.    sle.queryString='id,idsub'; // URL 栏查询串, 根据 URL 查询 ID 自动选中列表框项.
  10.       sle.getItem(); // 执行本程序
  11.       sle=null;
  12.  }
  13. */
  14.  /*-----------------------------------------------------------------------------------*/
  15.   * shawl.qiu javascript 表单列表框联动类 v1.2
  16.  /*-----------------------------------------------------------------------------------*/
  17.  //---------------------------------begin class select()-------------------------------//
  18.  function select(){ // shawl.qiu code
  19.   //------------------------------------begin public variable
  20.   //---------------begin about
  21.   this.auSubject='shawl.qiu javascript 表单列表框联动类';
  22.   this.auVersion='1.2';
  23.   this.au='shawl.qiu';
  24.   this.auEmail='shawl.qiu@gmail.com';
  25.   this.auBlog='http://blog.csdn.net/btbtd';
  26.   this.auCreateDate='2006-12-28';
  27.   this.auUpdate='2006-1-12';
  28.   //---------------end about
  29.   this.source='';          // 源字串
  30.   this.delimiter='#';      // 列定界符
  31.   this.marker='@';         // 行分隔符
  32.   this.idBase='level';     // 标签 ID 基准字串 
  33.   this.defaultSelect='';   // 默认选中, 格式: 值,值,值...
  34.   this.queryString='';     // URL 查询ID
  35.   this.addition=false;     // 添加值为零的项;
  36.   this.custom='';
  37.     this.item=0;
  38.   this.count=1;
  39.     this.word=function(){};
  40.   this.word.addition='默认值';
  41.   this.word.value=0;
  42.   //------------------------------------end public variable
  43.     //------------------------------------begin public method
  44.   this.getItem=function(){
  45.    var sLcaStr=location.search;
  46.    if(sLcaStr!=''){
  47.     var arTemp=[];
  48.     if(tl.queryString!=''){
  49.      tl.queryString.replace(/(.+?)(/,|$)/g,function($0,$1){
  50.       var re=new RegExp($1+'/=([^/&/=]+)');
  51.        sLcaStr.replace(re,function($0,$1){
  52.         arTemp[arTemp.length]=$1;
  53.        });
  54.        re=null;
  55.      });
  56.      tl.defaultSelect=arTemp.join(',');
  57.     } // end if 2
  58.    } // end if 1
  59.       tl.item=fCkLevel(tl.source, tl.delimiter, tl.marker);
  60.    fCreateOption(tl.source);
  61.   } // end this.getItem
  62.     this.onchange=function(oSle){
  63.    var nId=oSle.id.replace(tl.idBase,'');
  64.     tl.count=nId;
  65.     fSelectOpt(tl.count);
  66.   } // end this.onchange
  67.   //------------------------------------end public method
  68.     //------------------------------------begin private variable
  69.   var tl=this;
  70.   //------------------------------------end private variable
  71.     //------------------------------------begin private method
  72.     function fSelectOpt(nPsti){
  73.    nPsti-=0;
  74.    var sOpt='';
  75.    var sTemp=''
  76.    for(var i=nPsti; i<nPsti+1; i++){
  77.     try{
  78.      var n_psti=i+1;
  79.      var oSle=document.getElementById(tl.idBase+n_psti);
  80.      oSle.length=0;
  81.     } catch(e){return false; }
  82.      var oSleTemp=document.getElementById(tl.idBase+nPsti);
  83.       sOpt+=oSleTemp.options[oSleTemp.options.selectedIndex].value;
  84.       sOpt+=tl.delimiter;
  85.       sOpt+=oSleTemp.options[oSleTemp.options.selectedIndex].innerHTML;
  86.       sOpt+=tl.delimiter;
  87.       oSleTemp=null;
  88.            var oRe=new RegExp(sOpt+'(.*?'+tl.delimiter+'.*?'
  89.       +tl.delimiter+')(.*?'+tl.marker+')','gi');
  90.             tl.source.replace(oRe, function($0, $1, $2){
  91.        sTemp+=$1;
  92.        return $2;
  93.      });
  94.            sTemp=fStrClearRepeat(sTemp, tl.delimiter);
  95.      var oRe=new RegExp('(.*?)'+tl.delimiter+'(.*?)'+tl.delimiter, 'gi');
  96.            if(tl.custom!=''){
  97.       var arCst=tl.custom.split(':');
  98.       oSle.options[oSle.length]=new Option(arCst[0], arCst[1]);
  99.      }
  100.           if(tl.addition){
  101.       oSle.options[oSle.length]=new Option(tl.word.addition, tl.word.value);
  102.      }
  103.           sTemp.replace(oRe,
  104.       function($0, $1, $2){
  105.        if(fGoSelect(tl.item, tl.defaultSelect, $1)){
  106.         oSle.options[oSle.length]=new Option($2, $1, truetrue);
  107.        } else oSle.options[oSle.length]=new Option($2, $1);
  108.      });
  109.            oSle=null;
  110.    } // end for 1
  111.    tryarguments.callee(nPsti+1) } catch(e){}
  112.   } // end function fGoSelect
  113.     function fGoSelect(nPsti, sSle, sForCmp){
  114.    if(sSle=='')return false;
  115.    sSle=sSle.split(',');
  116.    if(sSle[nPsti-1]==sForCmp) return true;
  117.    return false;
  118.   } // end function fGoSelect(nPsti, sSle, sForCmp)
  119.     function fGetOptStr(nCount, sDelimiter){
  120.    if(nCount<=1)return false;
  121.    var sTemp='';
  122.    for(var i=1; i<nCount; i++){
  123.     var oSlePrnt=document.getElementById(tl.idBase+i);
  124.      sTemp+=oSlePrnt.options[oSlePrnt.options.selectedIndex].value;
  125.      sTemp+=sDelimiter;
  126.      sTemp+=oSlePrnt.options[oSlePrnt.options.selectedIndex].innerHTML;
  127.      sTemp+=sDelimiter;
  128.      oSlePrnt=null;
  129.    } // end for
  130.    return sTemp;
  131.   } // end function fGetOptStr(nCount, sDelimiter)
  132.     function fCreateOption(sStr){
  133.    if(tl.count>tl.item)return false;
  134.       var oSle=document.getElementById(tl.idBase+tl.count);
  135.     oSle.onchange=function(){
  136.      tl.onchange(this);
  137.     }
  138.    var sText='';
  139.    var sValue='';
  140.    var sTemp='';
  141.    if(tl.count==1){
  142.     var oRe=new RegExp('(.*?'+tl.delimiter+'.*?'+tl.delimiter+')(.*?'+tl.marker+')','gi');
  143.     sStr=sStr.replace(oRe, function($0, $1, $2){
  144.       sTemp+=$1;
  145.       return $2;
  146.     });
  147.    } else {
  148.     var sOpt=fGetOptStr(tl.count, tl.delimiter);
  149.     var oRe=new RegExp(sOpt+'(.*?'+tl.delimiter+'.*?'
  150.      +tl.delimiter+')(.*?'+tl.marker+')','gi');
  151.           tl.source.replace(oRe, function($0, $1, $2){
  152.       sTemp+=$1;
  153.       return $2;
  154.     });
  155.    } //end else 1
  156.       sTemp=fStrClearRepeat(sTemp, tl.delimiter);
  157.       var oRe=new RegExp('(.*?)'+tl.delimiter+'(.*?)'+tl.delimiter, 'gi');
  158.     if(tl.custom!=''){
  159.      var arCst=tl.custom.split(':');
  160.      oSle.options[oSle.length]=new Option(arCst[0], arCst[1]);
  161.     }
  162.        if(!tl.count-0===1){
  163.      oSle.options[oSle.length]=new Option('请选择类别', 0);
  164.     }
  165.       sTemp.replace(oRe,
  166.     function($0, $1, $2){
  167.      if(fGoSelect(tl.count, tl.defaultSelect, $1)){
  168.       oSle.options[oSle.length]=new Option($2, $1, truetrue);
  169.      } else oSle.options[oSle.length]=new Option($2, $1);
  170.    });
  171.       if(tl.addition){
  172.     if(tl.count>1){
  173.      var iTemp=tl.defaultSelect.split(',');
  174.      if(iTemp[tl.count-1]-0===0){
  175.       oSle.options[oSle.length]=new Option(tl.word.addition, tl.word.value, truetrue);
  176.      } else {
  177.       oSle.options[oSle.length]=new Option(tl.word.addition, tl.word.value);
  178.      } // end if 3
  179.     } // end if 2
  180.    } // end if 1
  181.        oSle=null;
  182.       tl.count++;
  183.    arguments.callee(sStr);
  184.   } // end function fCreateOption(sStr);
  185.     function fCkLevel(sSrc, sDelimiter,sMarker){
  186.    var num=0;
  187.    var re=new RegExp('(.*?)'+sMarker);
  188.    var re_=new RegExp(sDelimiter, 'g');
  189.       sSrc.replace(re,function($0,$1){
  190.     $1.replace(re_, function(m){
  191.      num++;
  192.     });
  193.    });
  194.    return num/2;
  195.   } // end fCkLevel(sSrc, sDelimiter,sMarker);
  196.     function fStrClearRepeat(sStr, sDelimiter){
  197.    var iStr='';
  198.    var re=new RegExp('.*?'+sDelimiter+'.*?'+sDelimiter, 'gi');
  199.       sStr=sStr.replace(re,function(m){
  200.     if(iStr.indexOf(m)==-1)
  201.     iStr+=m;
  202.     return '';
  203.    });
  204.    return iStr; // shawl.qiu code
  205.   } // end function fStrClearRepeat(sStr, sDelimiter);
  206.   //------------------------------------end private method
  207.  } // shawl.qiu code
  208.  //---------------------------------end class select()---------------------------------//


原创粉丝点击