Első üres szövegmező aktiválása a formon
Ha formokkal dolgozunk, általában szokás mondjuk onLoad-kor rátenni a focust valamelyik mezőre, ezzel is segítve a kitöltést. Prototypeban van gyárilag Form.focusFirstElemet(), az viszont aktiválja a már kitöltött mezőt is + checkboxra, radiobuttonra is rááll. Készítettem ezért egy új metódust a Form osztálynak, ami megoldja a problémát.
Object.extend(Form, {
focusFirstEmpty: function(formElm) {
$A(formElm.getInputs()).each(function(elm) {
if(!$(elm).hasClassName('readOnlyInput')
&& $F(elm) == ''
&& (Element.readAttribute(elm, 'type') == 'text'
|| Element.readAttribute(elm, 'type') == 'password'
|| Element.readAttribute(elm, 'type') == 'file'
|| elm.tagName == 'TEXTAREA')) {
Field.focus(elm);
throw $break;
}
});
}
});
Használat:
Event.observe(window, 'load', function() {
Form.focusFirstEmpty($('myForm'));
});
(Egy form element azonosítót vár, utána pedig annyit csinál, hogy összeszedi a mezőket egy tömmbe, végigmegy rajtuk, majd az első, amelyik nem readonly, üres illetve text, password, file vagy texarea típusú az megkapja a focust.)

Sztem ez valtozo lehet (elofordulhat h. az altalad kizart mezokre kell rakni a focust), nem egyszerubb oldal / formhoz igazitva megmondani h. (itt most ebben az esetben) EZEN a mezon legyen a focus?
Pont azt szerettem volna kiváltani, mivel eddig így nézett ki:
if($(’mail’) && $(’mail’).tagName == ‘INPUT’) {
if($F(’mail’) != ”) Field.focus(’pass’);
else Field.focus(’mail’);
}
…meg ilyenekből még 60 sor. (Persze speciális eset, egyet értek, de ezért tettem közzé, hogy akinek hasonló kell, ebből kiindulhat.)
akkor használod a $(’mezo-id’).focus(); -t