-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnextfocus.js
executable file
·93 lines (76 loc) · 2.69 KB
/
nextfocus.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
* Plugin para enfocar el siguiente campo de texto con el mismo selector del actual al dar enter
*
* Dependencias: jQuery
*
* @author Diego Malagón
* @param {Funtion} $ jQuery
* @returns {undefined}
*/
(function($){
var NextFocus = function(){
var el;
var options;
var selector;
/**
* Función para asignar los event listeners al campo de texto
*
* @returns {undefined}
*/
var init = function(){
// Por cada input
$(el).each(function(){
$(this).keydown(function(e){
var keyCode = e.keyCode || e.which;
// Si la tecla presionada está en la lista de keys
if(options.keys.indexOf(keyCode) !== -1){
e.preventDefault();
var inputs = $(selector);
// Obtener indice de input actual
var i = inputs.index(this);
// Si no se esta presionando la tecla shift
if(!e.shiftKey){
// Aumentar en 1 el indice
i++;
}
else{
// Disminuir en 1 el indice
i--;
}
if(i >= inputs.length){
i = 0;
if(typeof options.end === "function"){
options.end(i);
}
}
// Colocar foco en el input con indice i
inputs.eq(i).focus();
}
});
});
};
return {
init: function(element, opts){
el = element;
selector = el.selector;
options = opts;
init();
}
};
};
$.fn.nextfocus = function(options, args){
var element = this;
var Plugin = new NextFocus();
if(Plugin[options]){
return NextFocus[options](args);
}
else if(typeof(options) === "object" || !options){
options = $.extend({}, $.fn.nextfocus.defaults, options);
return Plugin.init(element, options, args);
}
};
$.fn.nextfocus.defaults = {
keys: [9, 13],
end: null
};
})(jQuery);