Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Как отключить кнопку TAB в TextField? (http://www.flasher.ru/forum/showthread.php?t=63539)

Гудвин 08.10.2004 19:47

Как отключить кнопку TAB в TextField?
 
Есть текстовое поле (TextField). При нажатии кнопки TAB, текстовое поле теряет фокус. Задача: при нажатии этой самой кнопки оставаться там же, на том же месте. Есть варианты? :confused:

silin 08.10.2004 20:55

см. TextField.tabEnabled

Гудвин 08.10.2004 21:23

Видно я не правильно понят. Свойство tabEnabled отключает или включает данный элемент в порядок обхода . Т.е. если отключить это свойство, то при обходе по TAB на этот элемент не наткнешься. Моя же проблема в другом: как будучи внутри TextField при нажатии TAB оставаться в нем же без каких-либо изменений фокуса или любых других реакций.

silin 08.10.2004 21:41

можно всех того..
for(i in this) this[i].tabEnabled=false;//только в этом мувике
или
Object.prototype.tabEnabled=false;//во всех

silin 08.10.2004 21:51

вот придумал как решить для одного текст.поля, не трогая других (если табуляцию между остальными надо сохранить):
tf.onSetFocus=function(){
Object.prototype.tabEnabled=false;
}
tf.onKillFocus=function(){
Object.prototype.tabEnabled=true;
}

Гудвин 09.10.2004 12:03

Silin , все казалось бы логично. Но только ты забыл это испробовать в деле.
Я пробовал и этот вариант. Если флэш запущен автономно в плэйре, то происходит следующее: при нажатии TAB фокус возвращается на себя же (вроде бы то что нам нужно), но вот только выделяет весь текст (селектит). Даже если побороть это выделение, это не решает проблему, потому как мне нужно использовать этот Флэш не автономно, а в html-странице. А в этом случае происходит нечто так же вполне логичное: фокус из textField переходит на следующий элемент страницы, либо (если такого нет) в адресную строку.
Вот такой вот конфуз.
Еще варианты? :rolleyes:

silin 09.10.2004 13:13

Цитата:

при нажатии TAB фокус возвращается на себя же (вроде бы то что нам нужно)
да не вроде бы, а именно то что ты просил
a тебе надо отменить табуляцию не только между объектами мувика, но и в браузере..
не думаю, что средствами флэша это удастся сделать

Гудвин 09.10.2004 13:27

Я думаю что путь решения немного в другом. Я почти до него добрался, но все же встретил проблему.
Путь таков: необходимо перехватить событие onKeyDown со значение клавиши TAB и вернуть при этом фокус обратно (setFocus). Перехватить получается, вернуть фокус нет. Судя по всему порядок перехвата этой клавиши таков: сначала я задаю ему свое действие, потом Флэш - свое. Возникает вопрос, можно ли переопределить полностью это самое действие Флэша, либо изменить этот порядок - сначала Флэш, а потом я?

Nox Noctis 09.10.2004 13:34

силин указал на проблему, которую тяжело обойти.

если бы речь шла о свф, проигрывающемся в standalone плеере, то решение с установкой фокуса при событии onKeyDown как раз подходит.

но когда у тебя ролик проигрывается в браузере, на TAB реагирует и ролик, и оболочка в которой он находится. т.е. фокус теряет не просто текстовое поле в ролике - но и сам ролик.

mort 09.10.2004 13:37

Что-то всё запутанно.
А так не катит?

все_объекты.onSetFocus=function(){
setFocus( "обратно" );
}


И вообще, насколько я понимаю, фокус часто нужен для управления объектами без мыша (клавой, например) -- так почему нельзя убрать вообще использование фокуса и просто ловить клаву? Ежели фокус всегда на одном объекте?

Nox Noctis 09.10.2004 13:38

можно попробовать воспользоваться fscommand("trapallkeys", "true");

но я не уверен что это поможет :) проверяй.

Цитата:

Оригинал написал(а) mort
все_объекты.onSetFocus=function(){
setFocus( "обратно" );
}

морт, проблема в том, что фкус уходит ИЗ РОЛИКА.

и к тому же, текстовое поле не должно навечно удерживать фокус.

Гудвин 09.10.2004 21:10

Пока что решение не найдено. Все из вышеперечисленного не является решением. Возможно этого решения и нет. Если кто-то может это опровергнуть - ему слово. А пока я благодарю всех за участие .
Иду обходить проблему с другого конца :)

mort 09.10.2004 23:14

2Гудвин
Поделился бы хоть, зачем так издеваться над тем, у чего вполне ясное предназначение.

Гудвин 10.10.2004 00:20

Секретов нет, расскрытых секретов тоже :)
У меня кстати по ходу возник вопрос. Можно ли отследить комбинации клавиш? Если да, то каким образом узнать код какой-либо комбинации? Например Ctrl+Tab? :)

silin 10.10.2004 00:54

Код:

this.createTextField("tf",0,0,0,60,20);
Key.addListener(k={});
c=false;
k.onKeyDown=function(){
        if(Key.getCode()==Key.CONTROL) c=true;
        tf.text=(c && Key.getCode()==Key.TAB) ? "ctrl-tab" : ""
}
k.onKeyUp=function(){
        if(Key.getCode()==Key.CONTROL) c=false;
}

тока смотреть надо в плеере ( не из флэша)


Часовой пояс GMT +4, время: 10:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.