使用jQuery选择以前的输入

时间:2013-04-19 22:55:50

标签: javascript jquery

在空输入上按退格键时,如何返回上一个输入?

    $('input').bind('input', function() {
        if (this.value.length >= $(this).attr('maxlength')) {
            $(this).next().select();
        }

        if (this.value.length == 0) {
            $(this).prev().select();
        }
    });

JSFIDDLE: http://jsfiddle.net/EwYKX/

2 个答案:

答案 0 :(得分:4)

如果元素已经为空值,则不会触发input事件,因为没有值更改。

keyup检查退格按钮应该足够了。假设输入元素总是直接兄弟,如例子所示:

$('input').on('input propertychange', function() {
    if (this.value.length >= this.maxLength) {
        $(this).next().focus();
    }
}).keyup(function(e) {
    if (e.which === 8 && !this.value) {
        $(this).prev().focus();
    }
});

Fiddle

我添加了一个propertychange侦听器作为旧IE的后备,但如果您不想使用这个丑陋的黑客来支持旧IE,则可以将其删除。此外,我已将.select()换成.focus(),以便在聚焦时不会选择整个字段,但这也取决于您。 =]

e.which === 8检查是这样的,它只能通过按退格键移动到前一个字段,但是如果您想移动到上一个输入,即使用户通过其他方式删除字段值(例如删除键或剪切/删除上下文菜单)你也可以删除e.which === 8,虽然这对于UX-wise imho没有多大意义。

答案 1 :(得分:0)

试试这个

        $('input').bind('input, keydown', function (e) {
           if (this.value.length >= $(this).attr('maxlength')) {
              $(this).next().select();
           }

           if (this.value.length == 0 && e.keyCode == 8) {
              $(this).prev().focus();
           }
        });