Monthly Archives: December 2010

Kaip pakeisti formos atributą action?…

Šis įrašas tikriausiai bus paskutinis šiais metais, ir džiaugiuos, kad jis galbūt bus naudingas ir kitiems, o gal kas nors parodys paprastesnį sprendimą man iškilusiai problemai.
Taigi taip susiklostė, kad prisireikė dinamiškai keisti formos atributą “action”, viskas atrodytų labai paprasta, vos pora JavaScript eilučių…
$("#my-form").attr('action', 'http://www.my-super-duper.com/post-url');
… ir problemos nebėra, tačiau mano atvėju tai negelbėjo, nes mano formoje buvo paslėptas input elementas, kurio pavadinimas buvo “action”, o mielas programuotojų draugas Internet Explorer 7 jį pamatęs tokioje situacijoje ima ir pasimeta, ir nebežino ką daryti. Paprasčiausias būdas tikriausiai atsisakyti paslėpto elemento vardu “action”, tiesiog kartais tai padaryti neleidžia aplinkybės (trečios šalies kodas ir pan.), tad tenka sugudrauti…

//...
var form = $('#my-form');
form.children('input[name=action]').remove();
form.attr('action', 'http://www.my-super-duper.com/post-url');
from.append($('<input type="hidden" name="action" value="1" />'));
//...

Gudrybė paprasta, iš formos pašalinam elementą vardu “action”, pakeičiam formos atributo “action” reikšmę ir formoje sukuriame naują elementą vardu “action” ir taip paprastai apgauname IE7. Dar šiokia tokia pastabėlė, bent jau man, prieš darant pakeitimus atribute, jis turėjo būti užpildytas, t.y. negali būti tuščias.

Tikiuos bent jau ateityje padėsiu kam nors sutaupyti bent keleta minučių :)

Su praėjusiom šventėm ir laimingų Naujųjų metų :)