先来看一下应用场景:手机号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
法律声明:未经许可,任何模仿本站模板、转载本站内容等行为者,本站保留追究其法律责任的权利! 隐私权政策声明