PDA

Просмотр полной версии : Перехват нажатия кнопки "Enter"


Sepulina
15.07.2006, 22:37
Добрый день!
Помогите перехватить нажатие кнопки Enter в компоненте TextArea. Отследить нажатие не представляется сложным с помощью ниже приведенного кода, но последствия нажатия все равно присутствуют в TextArea компоненте - курсор переходит на новую строку.
А мне необходимо полностью заменить нажатие Enter на выполнение моей функции.

var keyListenOnSendText = new Object();
keyListenOnSendText.keyDown = function () {
if (Key.getCode() == Key.ENTER){
mySomeFunctionSendText();
}
}
sendText.addEventListener("keyDown", keyListenOnSendText);

Techmaker
16.07.2006, 01:29
var keyListenOnSendText = new Object();
keyListenOnSendText.onKeyDown = function () {
if (Key.getCode() == Key.ENTER){
sendText.text="a"
}
}
Key.addListener(keyListenOnSendText);

Usnul
16.07.2006, 01:36
вопрос: какая версия AS? =)

Sepulina
16.07.2006, 01:46
Может я чего то не понял, но к сожалению этот пример не решает вопрос. Переход на новую строку остается. Может есть способ после обработки события нажатия Enter удалять это событие, чтобы TextArea не реагировала на него?

Sepulina
16.07.2006, 01:49
Usnul: AS-2.0

Usnul
16.07.2006, 01:52
ах, вот ты о чем. К сожалению переход на новую строчку всегда будет. Решается это путем вырезания последнего символа текстового поля при нажатии ввода, или же вырезанием символа стоящего за кареткой.

Nirth
16.07.2006, 01:56
function onEnterDown(event:Object):Void
{
if(Key.getCode() == Key.ENTER)
{
trace("enterPressed");
}
}
textArea.addEventListener("keyDown",onEnterDown);

textArea - Компонент TextArea

Nirth
16.07.2006, 02:20
Ой вы уже сменили тему.

Sepulina
16.07.2006, 09:19
Неужели нет способа прибить событие от нажатия Entera до того как оно достигнет TextArea? Только удалять последний символ? А если Enter нажат в середине текста? Ведь фильтр в компоненте как-то работает.

Techmaker
16.07.2006, 12:27
Неужели нет способа прибить событие от нажатия Entera до того как оно достигнет TextArea?
есть
myListener=new Object();
myListener.onKeyDown = function () {
if (Key.getCode()==Key.ENTER && String(Selection.getFocus())=="_level0.sendText.label"){
Selection.setFocus(undefined);
trace("ваша функция")
}
}
Key.addListener(myListener);

если нужно поставить курсор после нажатия обратно
myListener=new Object();
myListener.onKeyDown = function () {
if (Key.getCode()==Key.ENTER && String(Selection.getFocus())=="_level0.sendText.label"){
Selection.setFocus(undefined);
trace("ваша функция")
}
myListener.onKeyUp=function(){
delete(myListener.onKeyUp);
Selection.setFocus(sendText)
};
};
Key.addListener(myListener);

silin
16.07.2006, 19:53
такой вот еще вариант:
var l={};
l.nCR=ta.text.split("\r").length;
l.text=ta.text;
l.change=function(){
if(ta.text.split("\r").length!=this.nCR){
ta.text=l.text;
myFun();
} else{
this.text=ta.text;
}
}
ta.addEventListener("change",l);
function myFun(){trace("Enter pressed");}

Sepulina
17.07.2006, 15:07
Все работает, благодарю!