回车键完成全页面光标跳转,快捷输入

一.思路

筛选所有input[type='text']输入框,去掉readyonly属性的隐藏input,去掉日期输入框等无需或不能输入的input,剩下的就是可编辑输入inputs,对inputs进行遍历,添加回车‘keydown’或‘keyup’事件,让光标进行跳转。

页面除了input,还有select下拉框,同样的道理,筛选所有select进行遍历,以便判断光标的跳转。

二.jquery代码

1.获取各种input框

var inputtexts=$('input[type="text"]');//全部input输入框
var inputarr=$('input[type="text"][readonly]');//readyonly输入框
var dateinputs=$('.main_in_input_text_date');//日期框
var othertexts=$('.main_in_input_text_underline');//class=main_in_input_text_underline的输入框
var selects=$('select');//select下拉框

2.从inputtexts去掉无关的input

inputarr.each(
    function (k,v) {
        inputtexts.splice($.inArray(v,inputtexts),1);//去掉readynly输入框
    }
);

dateinputs.each(
    function (k,v) {
        inputtexts.splice($.inArray(v,inputtexts),1);//去掉日期输入框
    }
);

othertexts.each(
    function (k,v) {
        inputtexts.splice($.inArray(v,inputtexts),1);//去掉不需要的input,剩下可输入框
    }
);

3.如果页面还有动态添加的input,该怎么办呢?

因为是页面加载完成后添加的标签和元素,所以需要通过‘on()’方法来绑定委托事件(’on‘可以绑定一件或多见现在或未来的事件,而后添加的元素就是未来事件;’委托‘是指未来元素用’on‘绑定页面加载就存在的元素,委托这些元素完成事件)

比如说,页面有一个输入列表,一行内容输入不完,需要多行(默认是一行),每次点击’新增‘就增加一行,这些新增的行是在页面加载后添加的,称之为未来元素。为了实现所有可输入框光标的跳转,这些未来元素也在光标跳转的考虑之中。假如新增的input的class=’.addclass',则添加回车事件

$('body').on('keydown','.addclass',function () {//委托’body‘
    $.each($('.addclass'),//遍历
        function (k,v) {
            $(this).keydown(function (e) {//alert(k)
                if (e.keyCode == 13) {//回车事件
                    if(k+1==$('.addclass').length){//光标跳转到原有的某个input
                        inputtexts[31].focus();
                        return;
                    }
                    $('.addclass')[k+1].focus();//光标跳到下一个class=addclass的input
                }
            });
        }
    );
});

4.还有一个问题,页面中一般还有select下拉框挡在inputs之中,光标也需要跳转它们,遍历它们

$.each(selects,
    function (k,v) {
        $(this).keydown(function (e) {//alert(k)
            if (e.keyCode == 13) {//回车事件
                var sendway_type=$('#sendway_type').val();//判断运输方式跳到不同的起始输入框
               switch(k){
                   case 0:  if(sendway_type==0){
                       inputtexts[3].focus();//陆运
                   }else{
                       inputtexts[0].focus();//空运
                   };
                   break;
                   case 5:
                       inputtexts[40].focus();break;

               }
            }
        });
    }
);

5.未来元素和select都考虑了,剩下的就是遍历之前筛选的input,遍历添加回车事件

$.each(inputtexts,
    function (k,v) {
        $(this).keyup(function (e) {//alert(k)

            if(e.keyCode==13){//回车事件
                if(k==40){//最后一个显示的输入框回车后光标跳回起始框
                    var sendway_type=$('#sendway_type').val();//判断运输方式跳到不同的起始输入框
                    if(sendway_type==0){
                        inputtexts[3].focus();//陆运
                    }else{
                        inputtexts[0].focus();//空运
                    }
                }else{
                    var index=k+1;
                    if(k==5){//回车请求ajax
                        var MnemonicCode=$(this).val();
                        var url="./?m=ajax&a=getCompanyByMnemonicCode";
                        $.getJSON(url,{MnemonicCode:MnemonicCode},function (data) {
                            if(data.state==1){
                                //alert('ok')
                                $('#passenger_warehouse').val(data.WareHouse);
                                $('#id_card').val(data.IDCard);
                                $('#send_contact').val(data.LinkMan);
                                $('#send_phone').val(data.Phone);
                                $('#start_city').val(data.City);
                                $('#send_address').val(data.Address);
                                $('#sender').val(data.Company);
                            }else{
                                //alert(data.msg+',状态码:'+data.state)
                            }
                        });
                        inputtexts[index].focus();
                    }else if(k==6){
                        index=k+8;
                        inputtexts[index].focus();
                    }else if(k==14){
                        var receMnemonicCode=$(this).val();
                        var MnemonicCode=$('#MnemonicCode').val();
                        if(MnemonicCode==receMnemonicCode){//收发货不能同人
                            $(this).focus();
                            return;
                        }
                        var url="./?m=ajax&a=getCompanyByMnemonicCode";
                        $.getJSON(url,{MnemonicCode:receMnemonicCode},function (data) {
                            if(data.state==1){
                                //alert('ok')
                                $('#AgentName').val(data.WareHouse);
                                $('#get_contact').val(data.LinkMan);
                                $('#get_phone').val(data.Phone);
                                $('#disc_city').val(data.City);
                                $('#get_address').val(data.Address);
                                $('#geter').val(data.Company);
                            }else{
                                //alert(data.msg+',状态码:'+data.state)
                            }
                        });
                        index=k+6;
                        inputtexts[index].focus();//跳到下一输入框
                    }else if(k==29){
                        if($('.addclass').length>0){
                            $('.addclass')[0].focus();
                            return;
                        }

                        index=k+2;
                        inputtexts[index].focus();//跳到下一输入框
                    }else if(k==34){
                        index=39;
                        inputtexts[index].focus();
                    }else if(k==39){
                        selects[5].focus();
                    }
                    else{
            //默认跳到下一输入框,其他if都是判断光标想要跳转的输入框
inputtexts[index]. focus() ;
 
 } } } }) 
; 
 
 }) 
; 

6.之前的表格新增一行如果也想通过快捷键实现,比如说小键盘的’+‘配合‘alt’,如果新增的<tr class='main_in_re_conten'>,则

$('table').on('keydown','.main_in_tr_content',function (e) {//增加货物列表
    if(e.keyCode==229 || e.keyCode==107){//中文输入229,英文107,小键盘‘+’
        if(e.altKey){
            $('#main_in_tr_add').click();
        }

    }

})

7.以上代码有点混乱,但更重要的是分享一种思路,希望你有所收获。



### 回答1: Step 75.6回车键跳转是指在进行某种操作或程序时,按下回车键可以跳转到下一步或下一个界面。在计算机操作中,回车键常常用于确认输入、执行命令或进行下一步操作。 例如,在使用文本编辑器或word处理软件时,输入完一段文字后按下回车键光标会自动跳转到下一行,以便继续输入文字。 在安装软件或完成某个设置过程中,当系统要求确认或继续操作时,按下回车键通常可以快速跳转到下一步,从而加速整个操作流程。 另外,在一些图形界面或操作系统中,回车键也可以用于执行某个命令或打开某个程序。例如,在命令行界面中,输入完命令后按下回车键即可执行该命令;在Windows操作系统中,选择某个程序或文件后按下回车键即可打开它。 总之,Step 75.6回车键跳转是指在进行操作或程序时,按下回车键可以快速跳转到下一步或下一个界面,使操作更加便捷和高效。 ### 回答2: 当我们使用计算机进行文本处理时,回车键是一个非常常见的键,它用于表示换行。通常,按下回车键会使光标移动到下一行的开头。 而当我们谈到"step75.6回车键跳转"时,可能指的是在某个数字文档或程序中的第75.6步骤处按下回车键来进行跳转。 在一些文本编辑器或开发环境中,可以通过输入行号或行号加小数点的方式跳转到特定的行。假设这里的"step75.6"指的是文档或程序的第75行的第6个块或字符。当我们按下回车键时,光标将立即跳转到这个位置,方便我们继续编辑或查看。 这种功能在处理较长的文本或复杂的代码时非常实用,可以快速定位到特定的位置,避免了手动滚动或搜索的麻烦。它提高了效率,使我们能够更方便地编辑和修改文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值