【问题标题】:get cursor position on key up获取键上的光标位置
【发布时间】:2017-03-09 21:53:55
【问题描述】:

我在 javascript 或 jquery 方面不是很有经验。我需要确定用户的光标是否位于文本输入字段的最后一个位置,按键时最大长度为 3。如果是这样,请将焦点切换到下一个字段。我已经在表单上看到过很多这样的事情,所以我认为每个人都可以理解我正在寻找的半通用功能。有问题的输入字段不是文本类型,而是 tel 类型

我试图在这里找到这个问题的答案,但我无法理解我所问的类似问题的任何答案,但并不完全相同。例如,它提到了 selectionStart 和 selectionEnd 但我找不到真正解释这些的地方。在我看来,它们涉及选定的文本,但这不是我想要的。

我希望在用户键入时对其进行检查。以下是我尝试查看是否可以返回正确的值,但它返回未定义。

$("#phone1").keyup(function(){
    var phone = $("#phone1");
    alert(phone.selectionEnd);
}); 

对不起,如果我不明白其中的一些。任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这就是你要找的吗?

    (function ($, undefined) {
            $.phone1.getCursorPosition = function() {
                var el = $(this).get(0);
                var pos = 0;
                if('selectionStart' in el) {
                    pos = el.selectionStart;
                } else if('selection' in document) {
                    el.focus();
                    var Sel = document.selection.createRange();
                    var SelLength = document.selection.createRange().text.length;
                    Sel.moveStart('character', -el.value.length);
                    pos = Sel.text.length - SelLength;
                }
                return pos;
            }
        })(jQuery);
    
        $("#phone1").on('keypress', function(e){
            var key = String.fromCharCode(e.which);
            if(key === '*') {
                var position = $(this).getCursorPosition();
                console.log(position);
            } else {
                return false;
            }
        });​
    

    font: Get keyup position using jquery 我觉得很相似..

    【讨论】:

    • 如果您有问题,只需查看链接。它与您的非常相似。
    【解决方案2】:

    基本上,您应该绑定的 jquery 事件是“更改”事件,这将在每次发生更改时触发,例如新输入或删除输入等。

    例如

    (function(){
    
        $('#telNo').on('input' , function(){
                if($(this).val().length == $(this).attr('maxlength'))
                $(this).next('input').focus();
      });
    
    })();
    

    在上面的代码中,无论类型如何,这段代码都会将焦点转移到下一个输入上

    $(this).next('input').focus();
    

    HTML 标记应该是这样的:

    <input type="tel" maxlength="4" id="telNo">
    <input type="text" maxlength="4" id="text">
    

    这是一个工作小提琴

    JS Fiddle

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 2013-10-26
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2011-08-09
      • 2023-03-14
      • 2016-02-09
      • 2011-09-19
      相关资源
      最近更新 更多