zoukankan      html  css  js  c++  java
  • 用插件的形式编写升级版 jquery_select_interval.js 源码

    /* * select_interval 0.1 
     * Copyright (c) 2012 shuaisam  http://shuaisam.cnblogs.com/
     * Date: 2012-06-04 
     * Desc: 提供时间的选择区间,用josn数据初始化
     *       select_start_id  开始时间的id
     *       select_end_id   结束时间的id
     *       data_sourse    josn数据源  格式如var josn1 = {'start':[ ],'end':[ ]};
     *       select_start_judge 选中的开始时间与结束时间选项比较函数
     *       select_end_judge        选中的结束时间与开始时间选项比较函数
     */
    
    
    (function($) {
                 $.fn.select_interval=function(setting){
                     var default1={
                         //默认设置
                         select_start_id:'',
                         select_end_id:'',
                         data_sourse:'',
                         select_start_judge:function(select_start_value,select_end_opt_value){
                                 return false;
                         },
                         select_end_judge:function(select_end_value,select_start_opt_value){
                                 return false;
                         }
                     };
                     var set = $.extend({},default1,setting);
                     //将字符串转化为jquery对象
                     set.select_start_id = (typeof set.select_start_id == 'string' ? $('#'+set.select_start_id) : set.select_start_id);
                     set.select_end_id = (typeof set.select_end_id == 'string' ? $('#'+set.select_end_id) : set.select_end_id);
                     
                     var select_start = {
                         init:function(){
                             set.select_start_id.empty();
                             for(var i = 0; i <set.data_sourse.start.length;i++){
                                 $('<option></option>').text(set.data_sourse.start[i].text)
                                 .val(set.data_sourse.start[i].value)
                                 .appendTo(set.select_start_id);
                              }
                             
                         },
                         change:function(){
                                 var temp_select_start_value = set.select_start_id.val();
                                 var temp_select_end_value = set.select_end_id.val();
                                 select_end.init();
                                 if (''!= temp_select_start_value){
                                         set.select_end_id.children().each(function(){
                                                 if(set.select_start_judge(temp_select_start_value,$(this).val())) $(this).remove();
                                         });
                                 }
                                 
                                 set.select_end_id.val(temp_select_end_value);
                         }
                          
                     };
                     var select_end = {
                         init:function(){
                             set.select_end_id.empty();
                             for(var i = 0; i <set.data_sourse.end.length;i++){
                                 $('<option></option>').text(set.data_sourse.end[i].text).val(set.data_sourse.end[i].value).appendTo(set.select_end_id);
                              }
                             
                         },
                         change:function(){
                                 var temp_select_start_value = set.select_start_id.val();
                                 var temp_select_end_value = set.select_end_id.val();
                                 select_start.init();
                                 if (''!= temp_select_end_value){
                                         set.select_start_id.children().each(function(){
                                                 if(set.select_end_judge(temp_select_end_value,$(this).val())) $(this).remove();
                                         });
                                 }
                                 set.select_start_id.val(temp_select_start_value);
                         }
                         
                     };
                     //初始化设置
                     select_start.init();
                     select_end.init();
                     set.select_start_id.bind('change',function(){ select_start.change();});
                     set.select_end_id.bind('change',function(){ select_end.change(); });
                     
                 };    
             })(jQuery);
    

      

    <!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="../scripts/jquery-1.3.1.js" type="text/javascript"></script>
     <script src="../scripts/jquery_select_interval.js" type="text/javascript"></script>
    
     
     <script language="javascript">
             
             $(function(){
                     var josn1 = {
                          'start':[    
                                           {'text':'--请选择--','value':''},
                                           {'text':'星期一','value':1},
                                           {'text':'星期二','value':2},
                                           {'text':'星期三','value':3},
                                           {'text':'星期四','value':4},
                                           {'text':'星期五','value':5},
                                           {'text':'星期六','value':6},
                                           {'text':'星期日','value':7}
                                           
                                          ],
                          'end':[      
                                           {'text':'--请选择--','value':''},
                                           {'text':'星期一','value':1},
                                           {'text':'星期二','value':2},
                                           {'text':'星期三','value':3},
                                           {'text':'星期四','value':4},
                                           {'text':'星期五','value':5},
                                           {'text':'星期六','value':6},
                                           {'text':'星期日','value':7}
                                          ]
                          
                      };
                 
                  $.fn.select_interval({
                select_start_id:'hour_start_select',
                         select_end_id:'hour_end_select',
                         data_sourse:josn1,
                         select_start_judge:function(select_start_value,select_end_opt_value){
                             return (parseInt(select_start_value)>=parseInt(select_end_opt_value))? true :false;
                         },
                         select_end_judge:function(select_end_value,select_start_opt_value){
                             return (parseInt(select_end_value) <= parseInt(select_start_opt_value))? true :false;
                         }    
           });    
           
           $('#statistics_btn').bind('click', function(){
                         if(''==$('#hour_start_select').val()){
                                 alert('请选择开始的时间!!');
                                 $('#hour_start_select').focus();    
                                 return;
                             }
                             if(''==$('#hour_end_select').val()){
                                     alert('请选择结束的时间!!');
                                     $('#hour_end_select').focus();
                                     return;    
                             }
                             confirm($('#hour_start_select').val()+'---'+$('#hour_end_select').val());    
                             
                         });
                 
                 
             });
             
             
         </script>
         <style type='text/css'>
             body{background:#CFDFEF;font:12px/150% "Lucida Grande", Arial, Verdana, Helvetica, sans-serif;}
             div{
                 font-size:12px    
             }
             div span{
                 color:#6D93AB;
                 font-size:14px;
             }
             .select{
                 color:#79A2BD;
             }
             
             
         </style>
    </head>
    <body>
    
      <div id="mode_div">
          <span >按天统计:</span>
              <select id='hour_start_select' class='select'></select>
              至
              <select id="hour_end_select" class='select'></select>
                <button id="statistics_btn">统计</button>
      </div>
    </body>
    </html>
    

      

  • 相关阅读:
    on、where、having的区别(转载)
    Javascript 中的非空判断 undefined,null, NaN的区别
    SRM 223 Div II Level Two: BlackAndRed,O(N)复杂度
    ibatis通过Map封装参数调用存储过程
    NoSQL架构实践
    js实现密码强度验证
    ubuntu 10.04安装qtcreator并汉化
    2017第19周一
    越挫越战,越战越勇
    2017第18周六
  • 原文地址:https://www.cnblogs.com/fyy-888/p/5158570.html
Copyright © 2011-2022 走看看