在空输入上按退格键时,如何返回上一个输入?
$('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/
答案 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();
}
});
我添加了一个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();
}
});