先来看一下应用场景:手机号3-4-4,银行账号4-4-4-4的分组输入等,如下图所示
那现在来整理一下这种组合输入框的需求:
下面就看一下使用jquery怎么实现:
(function($) {
$.fn.combineinput = function(target) {
return this.each(function() {
if(this.tagName == 'INPUT') {
var $tt = $(this);
$(this).keyup(function() {
if($(this).attr('maxlength') == $(this).val().length) {
$(target).focus();
}
});
$(target).keydown(function(e) {
//backspace
if(e.keyCode == 8 && $(this).val() == '') {
$tt[0].focus();
}
}).focus(function() {
//keep focus on last incomplete input
if($tt.attr('maxlength') > $tt.val().length) {
//fixed jquery focus break
$tt[0].focus();
}
});
}
});
};
})(jQuery);
这里面用$tt[0].focus()而不是$tt.focus(),是因为jquery的focus会莫名其妙的中断,焦点停在上一级就不会再往上面找输入不完全的输入框。
< i nput t ype="text" id="i1" maxlength="3" size="3" /> < i nput t ype="text" id="i2" maxlength="4" size="4" /> < i nput t ype="text" id="i3" maxlength="4" size="4" />
使用方法:
$('#i1').combinei nput('#i2');
$('#i2').combinei nput('#i3');
如果要实现
$('#i1').combinei nput('#i2').combineinput('#i3');
这种方式,只需返回$(target)即可,不过这样不太符合jquery插件的规范
|
评论加载中...
|
Copyright@ 2011-2017 版权所有:大连仟亿科技有限公司 辽ICP备11013762-1号 google网站地图 百度网站地图 网站地图
公司地址:大连市沙河口区中山路692号辰熙星海国际2215 客服电话:0411-39943997 QQ:2088827823 42286563
法律声明:未经许可,任何模仿本站模板、转载本站内容等行为者,本站保留追究其法律责任的权利! 隐私权政策声明