求大神用js或jQuery实现输入框内容与表格背景色同步

求实现如下功能:图1:页面打开后,上面的表格里有6个数字,默认是有背景色的黄色按钮输入框里面只能输入数字,(范围01-33),个位数前面自动加0,如:010203数字输入... 求实现如下功能:图1:页面打开后,上面的表格里有6个数字,默认是有背景色的黄色按钮 输入框里面只能输入数字,(范围01-33),个位数前面自动加0,如: 01 02 03 数字输入后自动处理数字格式,按由小至大排列,数字之间用空格分开 以后如果再次添加其他数字后也自动格式化 如:首次输入15 02 33后排列成:02 15 33 再次在02 15 33后面接着输入 20 01 自动排列成: 01 02 15 20 33 页面打开后下面表格中的数字会与上面表格同步改变背景色,默认是都有背景色的 但与上面表格不同的是颜色的取值范围:01-11红色\12-22绿色\23-33蓝色图2:当鼠标点击某个数字后,上面表格去掉该数字背景色,再次点击则还原背景色 当鼠标点击某个数字后,输入框里会同步显示该数字 当鼠标点击某个数字后,下面表格去掉该数字背景色如图2:当鼠标点击上面表格中11 33后11 33的背景色去掉 输入框里显示11 33 下面表格中11 33的背景色去掉 当输入框里输入11 33后,上下两个表格中的11 33背景色去掉 输入框右边的"清空"按钮点击后清空内容,页面还原成图1的样子备注:上下两个表格中的数字背景色是同步改变的 输入框默认是空的,可以多次在里面添加修改数字 输入数字之后自动格式化排列数字.(如果无法实现就在旁边加个按钮,点击后实现排序)
源文件连接
展开
 我来答
zwf2zxn
2018-04-25 · TA获得超过289个赞
知道小有建树答主
回答量:270
采纳率:85%
帮助的人:103万
展开全部
下面js放进你原来index文件就行了
<script src='jquery-2.1.4.min.js'></script>
    <script>
        $(function(){
            //输入框的值改变**********************************************
            $('#ipt').change(function(){
                var arr = getIptArr();
                
                //上面的背景色消失
                $('.tab1 tr td').each(function(){
                      wipeColor(arr, $(this), true);
                })

                //下面的背景颜色消失
                $('.tab2 tr td').each(function(){
                    wipeColor(arr, $(this), false);
                })
                
                var nums = arr.map(function(val){
                    return val<10 ? '0'+val : val;
                })
                $(this).val(nums.join(' '));
            })
             //获取输入框值的数组
            function getIptArr(){
                var arr = $.trim($('#ipt').val()).split(' ');
                arr = str2arr(arr);         //字符串元素转数字
                arr = arr.sort(sortNumber); //升序

                return arr;
            }

            //数组元素:  字符串 转 数字
            function str2arr(arr){
                var len = arr.length;
                var newArr = [];
                for(var i=0; i<len; i++)
                {
                  var num = $.trim(arr[i]);
                  if(num != ''){
                      newArr.push(parseInt(num));
                  }
                }

                return newArr;
            }
            //数组排序函数的参数
            function sortNumber(a,b){
              return a-b;     //升序
            }

            //判断单元格td的背景色是否消失
            function wipeColor(arr, obj, ismenu){
                  var num = parseInt(obj.text());
                  var flag = arr.indexOf(num);        //不等于-1的表示背景色要消失
                  
                  var className = 'bg';               //单元格class
                  if(!ismenu)
                  {   //页面部分单元格01-11红色\12-22绿色\23-33蓝色图
                      className = getClass(num);
                  }
                  flag!=-1 ? obj.removeClass(className) : obj.addClass(className);
            }
            //返回不同数字对应的class
            function getClass(num){
                var className = '';
                if(num>=1 && num<=11)
                  className = 'bg1'
                else if(num>=12 && num<=22)
                  className = 'bg2'
                else if(num>=23 && num<=33)
                  className = 'bg3'

                return className;
            }

            //菜单部分单元格点击**********************************************
            $('.tab1 tr td').click(function(){
                  var flag = $(this).hasClass('bg');
                  var num = $(this).text();
                  var className = getClass(parseInt(num));
                  if(flag){
                      $(this).removeClass('bg');
                      //页面部分单元格
                      synchCellColor(2, num, 'remove', className);
                      //同步输入框
                      synchIpt(parseInt(num), 'add');

                  }
                  else{
                      $(this).addClass('bg');
                      //页面部分单元格
                      synchCellColor(2, num, 'add', className);
                      //同步输入框
                      synchIpt(parseInt(num), 'minus');
                  }

            })
            //页面部分单元格点击**********************************************
            $('.tab2 tr td').click(function(){
                  var flag = true;
                  var num = $(this).text();
                  var className = getClass(parseInt(num));

                  if(!$(this).hasClass('bg1') && !$(this).hasClass('bg2') && !$(this).hasClass('bg3')){
                      flag = false;
                  }
                  
                  if(flag){
                      //页面部分单元格
                      //$(this).addClass(className);
                      synchCellColor(2, num, 'remove', className);    //有些数字有两个的
                      //菜单部分单元格
                      synchCellColor(1, num, 'remove', 'bg');
                      //同步输入框
                      synchIpt(parseInt(num), 'add');

                  }
                  else{
                      //页面部分单元格
                      synchCellColor(2, num, 'add', className);
                      //菜单部分单元格
                      synchCellColor(1, num, 'add', 'bg');
                      //同步输入框
                      synchIpt(parseInt(num), 'minus');
                  }

            })
            //页面部分单元格同步颜色
            function synchCellColor(classNum, num, flag, className){
                $('.tab'+classNum+' tr td').each(function(){
                    var val = parseInt($(this).text());
                    if(parseInt(num) == val){
                        if(flag == 'add')
                            $(this).addClass(className);
                        else if(flag == 'remove')
                            $(this).removeClass(className);

                        return false;
                    } 
                })
            }
            //同步输入框数字
            function synchIpt(num, flag){
                var arr = getIptArr();
                
                if(flag == 'add'){        //加上
                    arr[arr.length] = num;
                    arr = arr.sort(sortNumber);
                }
                else if(flag=='minus'){   //去除
                    var index = arr.indexOf(num);
                    arr.splice(index, 1);
                }
                var nums = arr.map(function(val){
                        return val<10 ? '0'+val : val;
                    })

                $('#ipt').val(nums.join(' '));
            }
            

        })

    </script>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式