Просмотр полной версии : Как отключить действие клавиши?
Есть динамическое текстовое поле, и требуется отключить действия таких клавиш как "Backspase", "Delete".
Кто-нибудь сталкивался с этим?
Т.е., на сколько я понял, вам необходимо запретить пользователю изменять уже введенный текст. При помощи onChanged отслеживайте, изменился ли уже введенный текст, и если да, то меняйте его на старое значение.
Возможно есть такой способ, но я его не знаю. Попробовал так, текст не удаляется, но каретка двигается влево.
Key.addListener(inputText);
snapText = "";
down = false;
inputText.onKeyDown = function() {
if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
snapText = this.text;
down = true;
}
};
inputText.onKeyUp = function() {
if (down) {
this.text = snapText;
down = !down;
}
};
Спасибо за помощь!
Сама идея ясна, гениально !!!
Вот с реализацией загвоздка. Переменная "this.text" берет значание какого текстового поля.
Пытался вот так:
per = "";
down = false;
_root.createTextField("T",1,50,50,100,100);
_root.T.text="";
_root.T.border=true;
_root.T.type="input";
var obj:Object = {};
Key.addListener(obj);
per = T.text;
obj.onKeyDown = function() {
if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
T.text = per;
down = true;
}
};
obj.onKeyUp = function() {
if (down) {
per = T.text;
down = !down;
}
};
Если можно, уважаемый SAMANA, скинь fla файл :)
У тебя были ошибки, ты перепутал немного. Вот правильный код, в коментах посмотри я написал где были ошибки
per = "";
down = false;
_root.createTextField("T",1,50,50,100,100);
_root.T.text="";
_root.T.border=true;
_root.T.type="input";
var obj:Object = {};
Key.addListener(obj);
//per = T.text; Зачем переопределять ведь это не нужно???
obj.onKeyDown = function() {
if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
per=T.text //Тут было наоборот T.text=per, а ведь смысл в том чтобы
//на этом этапе сохранить текст в переменную
down = true;
}
};
obj.onKeyUp = function() {
if (down) {
T.text=per// а тут уже тексту присваивается значение из переменной.
//А было опять же наоборот per=T.text
down = !down;
}
};
И есть еще проблема в реализации от SAMANA. Kогда нажимаем "Backspace" долго, стирает все. Как избежать этого?
Добавлено через 6 минут
Спасибо за исправления :)
Пошел другим путём, и он оказался лучше и логичнее, к тому же работает правильно.
_root.createTextField("inputText",1,0,0,200,30);
inputText.type = "input";
inputText.border = true;
Key.addListener(inputText);
inputText.onKeyDown = function() {
if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
this.type = "dynamic";
}
};
inputText.onKeyUp = function() {
this.type = "input";
};
Супер!!!
Все гениальное просто :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.