ugrás a tartalomhoz

JS dinamikus inputra hivatkozás

PredMan · 2008. Feb. 24. (V), 16.12
Sziasztok!

dinamikus inputokra hogyan lehet hivatkozni?
van egy olyan kódom, amely segítségével betudok szúrni egy inputba egy tetszőleges karaktert. Így:
  1. <a onclick="insertcode_leiras('&Oslash;'); refocus_leiras(); return false;" href=""><img src="Images/atmero.jpg" border="0" vspace="3" /></a>  
Addíg nincs is gond, amíg egy már létező inputra hivatkozok, mert ugye annak a neve fix. De ha én dinamikusan hozom létre az inputot, akkor mire hivatkozzak?
  1. function changeIt() {  
  2.     var i = 1;  
  3.     my_div.innerHTML = my_div.innerHTML +"<input type='text' name='fajta[]'>&nbsp;&nbsp;<input type='text' name='adat[]'>&nbsp;&nbsp;<input type='text' name='ar[]'><br>"  
  4. }  
a cél az lenne, hogy a karaktert abba a dinamikusan létrehozott inputmezőbe illessze (adat[]-ba kéne valahogy), amelyiken éppen a focus() van.

Tudnátok ebben segíteni?

előre is köszönöm!
 
1

jQuery és egy kis trükk

Velias9 · 2008. Feb. 26. (K), 17.57
A jQuery-t innen tudod letölteni.
Az általam felhasznált függvények leírását itt és itt találod meg.

A JavaScript kód:
  1. <script type="text/javascript">  
  2. <!--  
  3.   
  4. window.fokusz = "";  
  5.   
  6. function changeIt()  
  7. {    
  8.     var i = 1;  
  9.     azonosito = azonositotKeszit();  
  10.     my_div.innerHTML += "<input type='text' name='fajta[]' />&nbsp;&nbsp;<input type='text' name='adat[]' id=" + azonosito + " onfocus='fokuszBeallito($(this).id());' />&nbsp;&nbsp;<input type='text' name='ar[]' /><br />"    
  11. }  
  12.   
  13. function fokuszBeallito(azonosito)  
  14. {  
  15.     window.fokusz = azonosito;  
  16. }  
  17.   
  18. function azonositotKeszit()  
  19. {  
  20.     while (true)  
  21.     {  
  22.         azonosito = Math.floor(Math.random * 10000);  
  23.         segito = $(*).filter("#" + azonosito);  
  24.         if (segito == "")  
  25.         {  
  26.             break;  
  27.         }  
  28.     }  
  29.     return azonosito;  
  30. }  
  31.   
  32. -->  
  33. </script>  
(Az lenne a legjobb (és valószínűbbé tenné a helyes működést), ha a Javascript kódban a onfocus='fokuszBeallito($(this).id());' helyére be tudnál valahogy tenni valami ilyemit: onfocus='fokuszBeallito(" + azonosito + ");')

Ebből valami ilyesmi HTML kód lesz:
  1. ...  
  2.   
  3. <input type='text' name='fajta[]' />&nbsp;&nbsp;  
  4. <input type='text' name='adat[]' id='9513' onfocus='fokuszBeallito($(this).id());' />&nbsp;&nbsp;  
  5. <input type='text' name='ar[]' /><br />  
  6.   
  7. ...  
Ezek után a karakterbeszúró függvényed a window.fokusz változóból tájékozódhat a fókuszban lévő mezőről. Ezt megteheti getElementById(azonosito) vagy a $("input").filter("#" + azonosito) függvények valamelyikével.

A programot nem tudtam kipróbálni, úgyhogy nem bizos, hogy jó, de ha mást nem legalább valakinek ötletet adhat egy tényleg működőképeshez.

Remélem tudtam segíteni.