Előfordulhat, hogy egy TextArea-ban a Tab gomb lenyomásával azt szeretnénk, hogy ne a következő elemre ugorjunk, hanem az adott helyre szúrjunk be egy "\t" –t.
Legegyszerűbb, ha nem a TextArea-t módosítjuk, hanem egy plugin-nal egészítjük ki.
xtype: 'textarea',
plugins: ['tabKey']
}
A plugin léterhozása:
var addTab = function (input) {
// IE:
if (document.selection && document.selection.createRange) {
input.selection = document.selection.createRange();
input.selection.text = "\t";
// FF:
} else if (typeof input.selectionStart === 'number') {
var start = input.value.substring(0, input.selectionStart);
var end = input.value.substring(input.selectionEnd);
var newRange = input.selectionStart+ 1;
var scrollPos = input.scrollTop;
input.value = start + "\t" + end;
input.setSelectionRange(newRange, newRange);
input.scrollTop = scrollPos;
}
};
return {
init: function (field) {
field.enableKeyEvents = true;
field.on('keydown', function (field, e) {
if (e.getKey() === e.TAB) {
addTab(field.el.dom);
e.stopEvent();
}
});
}
};
});
Végül még néhány CSS szabály, ami itt hasznos lehet.
Azonos szélességű betűtípus, illetve a tab mérete:
-moz-tab-size: 4;
-o-tab-size: 4;
-webkit-tab-size: 4;
tab-size: 4;
Példa itt: http://stack.hu/extjs/textarea_tab.php