| Autor | Zpráva | ||
|---|---|---|---|
| lestor Profil |
Zdravim
Mám víceřádkový formulář, ze kterého potřebuji předávat proměnné přes ajax do php a zpět. Problém je v tom, že nemohu přijít na to, jak předat proměnnou z konkrétní části formuláře a vrátit ji upravenou zpět do konkrétní části. Tady je stručná část kódu javascript. Myslím že není třeba to sem psát celý. function vyhledej_kategorii(kategorie){
var vyhledana=document.getElementById(vyhledej_id[kategorie]).value;
}Tady je část formuláře kterým volám funkci <input name="vyhledej_id[1]" id="vyhledej_id[1]" onkeyup="javascript:vyhledej_kategorii(1)" type="text"> <input name="vyhledej_id[2]" id="vyhledej_id[2]" onkeyup="javascript:vyhledej_kategorii(2)" type="text"> Cílem tedy je, abych do proměnné "vyhledana" dostal obsah formuláře input a věděl přitom, k jakému ID přísluší, abych mohl výsledek opět k příslušnému ID vrátit. Samozřejmě mi nejde o dva formulářové řádky, ale potřebuji aby byla funkce použitelná pro libovolný počet řádků. Nefunguje mi na tom především získávání proměnné "document.getElementById(vyhledej_id[kategorie]).value" ale nevím jak jinak ji získat. Proměnná "kategorie" se mi vrací, vyhledej_id se vrací (není li pole), ale v případě že ji zapisuji takto jako pole, pak mi nefunguje. Jsem v javascript úplný začátečník. Díky za radu, už si s tím hraju druhý den :-( |
||
| Joker Profil |
#2 · Zasláno: 16. 10. 2014, 17:50:57
lestor:
V principu správně, jen tam chybí uvozovky kolem řetězců: document.getElementById("vyhledej_id[" + kategorie + "]").value; |
||
| lestor Profil |
#3 · Zasláno: 16. 10. 2014, 18:58:46
Díky za radu, ale stále mi to nejde.
Musím tam v tom případě mít ještě další chybu :-| Tady je celý javascript: <script type="text/javascript" language="javascript">//<![CDATA[
function vyhledej_kategorii(kategorie){
var http_request=false;
var vyhledana=document.getElementById("vyhledej_id[" + kategorie + "]").value;
var request="kategorie="+kategorie"&vyhledana="+vyhledana;
if(window.XMLHttpRequest){
http_request=new XMLHttpRequest();
}
else if(window.ActiveXObject){
try{http_request=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(eror){
http_request=new ActiveXObject("Microsoft.XMLHTTP");
}
}
http_request.onreadystatechange=function(){
zpracuj(http_request);
};
http_request.open('POST','components/com_mojerccomponent/mojerc_ajax.php',true);
http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
http_request.send(request);
}
function zpracuj(http_request){
if(http_request.readyState==4){
if(http_request.status==200){
document.getElementById("vysledek[" + kategorie + "]").innerHTML=http_request.responseText;
}
else{
alert('Chyba');
}
}
}
//]]></script>a tady je část html <form name='zadani' action='/administrator/index.php?option=com_mojerccomponent' method='post' > <input type='text' name='vyhledej_id[1035]' id='vyhledej_id[1035]' onKeyUp='javascript:vyhledej_kategorii(1035)' > <p id='vysledek[1035]'></p> <input type='text' name='vyhledej_id[923]' id='vyhledej_id[923]' onKeyUp='javascript:vyhledej_kategorii(923)' > <p id='vysledek[923]'></p> </form> |
||
|
Časová prodleva: 4 dny
|
|||
| lestor Profil |
#4 · Zasláno: 20. 10. 2014, 16:11:09
Takže nikdo si s tím neví rady?
Nějak se to přece musí dát řešit :-( Pokud by mi někdo poradil, nemám problém zaplatit konzultaci. Kdyžtak mi napište. |
||
| _es Profil |
lestor:
Premenná kategorie je lokálna premenná funkcie vyhledej_kategorii, preto nemôže byť dostupná z funkcie zpracuj. Na čo vyhľadávaš element podľa id, keď ho máš priamo dostupný v this? Do elementu onkeyup nepatrí to javascript:, aj keď to nespôsobí chybu. Udalosť onkeyup nemusí zachytiť všetky zmeny - čo keď sa vloží obsah pomocou myši?
|
||
| lestor Profil |
#6 · Zasláno: 20. 10. 2014, 18:25:35
_es:
Nakonec jsem zjistil, že základem chyby bylo chybějící plus zde: 'var request="kategorie="+kategorie"&vyhledana="+vyhledana;' Jinak to už funguje podle představ :-) I tak moc díky za pomoc. |
||
| _es Profil |
#7 · Zasláno: 20. 10. 2014, 18:41:50
lestor:
„Jinak to už funguje podle představ :-)“ Chybu v 28. riadku (neexistujúca premenná kategorie) si však musel opraviť tiež, nie?
|
||
| lestor Profil |
#8 · Zasláno: 20. 10. 2014, 20:56:01
_es:
jj to jsem zapoměl zmínit. proměnnou jsem přidal do funkce "zpracuj(http_request,kategorie)" na řádku 18 a 25 :-) |
||
|
Časová prodleva: 12 let
|
|||
0