PDA

Просмотр полной версии : Submit формы при нажатии <Enter>


Orangutan
22.04.2006, 12:56
Имеются несколько текстовых полей типа инпут, сделал кнопку для отсылки введенной информации в PHP, но, хотелось бы, чтобы и при нажатии <Enter> когда активировано (!) текстовое поле вылонялась та же операция, т.е. как это работает в обычном html'е :p
Подскажите пожалуйста, как это реализовать :victory:

neelts
22.04.2006, 14:28
используй либо компонент TextInput:
var listenerObject:Object = new Object();
listenerObject.enter = function(eventObject:Object) {
//...
};
textInputInstance.addEventListener("enter", listenerObject);


либо следующий код для класса TextField
//
// TextField KeyEvent by neelts
//
var t:TextField = _root.createTextField("txt", 0, 50, 50, 100, 20);
t.border = true;
t.type = "input";
var t2:TextField = _root.createTextField("txt2", 1, 50, 100, 100, 20);
t2.border = true;
t2.type = "input";
t2.bord = function(){
this.border = this.border ? false : true;
}
function write(a) {
a.t.text = a.p;
}
//
function addKeyEvent(t:TextField, key:Number, event:Function, obj, args) {
t.key = key;
t.onSetFocus = function() {
this.onKeyDown = function() {
if (Key.getCode() == this.key) {
event.call(obj, args);
}
};
Key.addListener(this);
};
t.onKillFocus = function() {
delete this.onKeyDown;
Key.removeListener(this);
};
}
function delKeyEvent(t:TextField) {
delete t.key;
delete t.onSetFocus;
delete t.onKillFocus;
delete t.onKeyDown;
}
addKeyEvent(t, Key.SPACE, write, _root, {t:t, p:"first text"});
addKeyEvent(t2, Key.SPACE, t2.bord, t2);

neelts
23.04.2006, 00:41
зы, SPACE на ENTER замени, при тестировании из флеша просто не работает...

Orangutan
23.04.2006, 00:57
Спасибо большое за помощь! Сделал с компонентом TextInput, все отлично работет :) Только можно ли ему стиль менять? Пробовал создать из него мувик и поставить Alpha 0%, но тогда мои текстинпуты не раегируют на <Tab> :)

Jegor UQ
23.04.2006, 01:35
var lis:Object = new Object ();
function send ()
{
//отправить
}
lis.onKeyDown = function ()
{
Key.getCode () == Key.ENTER ? send () : false;
};
Key.addListener (lis);

neelts
23.04.2006, 10:54
Jegor - "когда активировано (!) текстовое поле"

Orangutan - для таких целей лучше использовать обычный TextField.
делать стили для компонентов не очень удобно, нужно из библиотеки импортировать скины этого компонента, потом еще скриптом их натягивать... вообщем гимор...

Jegor UQ
23.04.2006, 14:06
var lis:Object = new Object ({focus:false});
//
//***************************************************
//
for (var i:Number = new Number (); i < 3; i++)
{
createTextField ("field" + i, getNextHighestDepth (), 10, 20 * i, 300, 20);
with (eval ("field" + i))
{
border = true;
type = "input";
}
}
createTextField ("field_result", getNextHighestDepth (), 10, 100, 300, 20);
with (field_result)
{
border = true;
text = "please, fill the textFields and press ENTER";
}
//
//***************************************************
//
function sendinfo ()
{
//
//***************************************************
//
field_result.text = field0.text + " " + field1.text + " " + field2.text;
// отправить
//***************************************************
//
}
for (i = 0; i < 3; i++)
{
eval ("field" + i).onSetFocus = eval ("field" + i).onKillFocus = function ()
{
lis.focus = !lis.focus;
};
}
lis.onKeyDown = function ()
{
if (Key.getCode () == Key.ENTER && lis.focus)
{
sendinfo ();
}
};
Key.addListener (lis);


Работает... так? Или я опять что-то недопонял... :umnik2: