init
This commit is contained in:
73
include/ECM/tablenavigator.js
Normal file
73
include/ECM/tablenavigator.js
Normal file
@@ -0,0 +1,73 @@
|
||||
(function ($) {
|
||||
$.fn.enableCellNavigation = function () {
|
||||
|
||||
var arrow = { left: 37, up: 38, right: 39, down: 40 };
|
||||
|
||||
// select all on focus
|
||||
this.find('input').keydown(function (e) {
|
||||
|
||||
// shortcut for key other than arrow keys
|
||||
if ($.inArray(e.which, [arrow.left, arrow.up, arrow.right, arrow.down]) < 0) { return; }
|
||||
|
||||
var input = e.target;
|
||||
var td = $(e.target).closest('td');
|
||||
var moveTo = null;
|
||||
|
||||
switch (e.which) {
|
||||
|
||||
case arrow.left: {
|
||||
if (input.selectionStart == 0) {
|
||||
var $myDiv = $("[id^=ui-id-]");
|
||||
moveTo = td.prev('td:has(input,textarea)');
|
||||
}
|
||||
break;
|
||||
}
|
||||
case arrow.right: {
|
||||
if (input.selectionEnd == input.value.length) {
|
||||
var $myDiv = $("[id^=ui-id-]");
|
||||
moveTo = td.next('td:has(input,textarea)');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case arrow.up:
|
||||
case arrow.down: {
|
||||
|
||||
var tr = td.closest('tr');
|
||||
var pos = td[0].cellIndex;
|
||||
|
||||
var moveToRow = null;
|
||||
if (e.which == arrow.down) {
|
||||
var $myDiv = $("[id^=ui-id-]");
|
||||
moveToRow = tr.next('tr');
|
||||
}
|
||||
else if (e.which == arrow.up) {
|
||||
var $myDiv = $("[id^=ui-id-]");
|
||||
moveToRow = tr.prev('tr');
|
||||
}
|
||||
|
||||
if (moveToRow.length) {
|
||||
moveTo = $(moveToRow[0].cells[pos]);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
//sprawdza czy wyswietla sie pole autocomplete, jeśli tak to blokuje poruszanie po tabelce
|
||||
if (moveTo && moveTo.length && $myDiv.css('display') != 'block') {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
moveTo.find('input,textarea').each(function (i, input) {
|
||||
input.focus();
|
||||
input.select();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
})(jQuery);
|
||||
|
||||
Reference in New Issue
Block a user