Autor | Zpráva | ||
---|---|---|---|
Idigest Profil |
#1 · Zasláno: 9. 11. 2011, 23:24:36
Mam takyto problem - neviem nacitat dynamicky hodnotu pre target pri AJAX form, aj ked na dalsom mieste skriptu to dokazem.
Ukazka: var targetNum = 0; $(document).ready(function() { $('#htmlForm').ajaxForm({ target: '#htmlExampleTarget_XXX??? < TU NEVIEM DOSTAT TU MENIACU SA HODNOTU MapaID (Nizsie ju viem nacitat) success: function() { targetNum = jQuery(this).children('input[name="MapaID"]').val(); $('#htmlExampleTarget_'+targetNum).fadeIn('slow'); } }); }); Na stranke je rad rovnakych formularov, v ktorych sa meni hodnota MapaID, k nim je priradeny DIV, kde sa ma zobrazit info o zapise dat na inej stranke, kam su data posielane. Takze tych div a forms je viac a potrebujem, aby sa vzdy zobrazil ten spravny. TU je ukazka div a forms: <div id='htmlExampleTarget_"&MapaID&"'></div> <form id='htmlForm_X' action='process2.asp' method='post'>" <input TYPE='hidden' NAME='MapaID' VALUE='"&MapaID&"'>" <input TYPE='text' NAME='pocet' size='3' value='0'><br>" <input type='submit' value='Ulož objednávku do košíka'>" </form> Vsetko funguje, data sa vracaju, aj sa vypisuju v div, no zatial nemozno dynamicky prikazovat, ktory div sa ma zobrazit. Nemam vela skusenosti z JQuery syntaxou. Vdaka za kazdu radu. |
||
K Profil * |
#2 · Zasláno: 10. 11. 2011, 17:34:28
target: '#htmlExampleTarget_' + jQuery(this).children('input[name="MapaID"]').val(); |
||
Idigest Profil |
#3 · Zasláno: 10. 11. 2011, 19:59:30 · Upravil/a: Idigest
K:
> target: '#htmlExampleTarget_' + jQuery(this).children('input[name="MapaID"]').val(); > > nefunguje? Zial, nie. Dal som za ten druhy riadok, kde je ten isty kod, ktory, ako som si myslel, funguje. alert(targetNum); a vypisuje mi to hlasku "undefined". |
||
Idigest Profil |
#4 · Zasláno: 11. 11. 2011, 17:54:37 · Upravil/a: Idigest
SKusal som problem vyriesit tak, ze nacitam go premennej targetNum hodnotu uvedenu v atribute form name. To sa mi podarilo. Pouzil som funkciu showFormElements(). Zaujimave ale je ze funkcia, ktora robi Ajax operaciu tuto hodnotu nevidi, neviem ju tam preniest, hoci, pokial viem var targetNum zabezpecuje, ze targetNum ma global scope.
var targetNum function showFormElements(oForm) { var targetNum = oForm.name; alert(targetNum+'===vo funkcii'); } Tuto fukciu folam takto <input type='submit' value='Ulož objednávku do košíka' onclick='showFormElements(this.form);'>" </form>" Cely skript teraz vyzera takto: <script type="text/javascript"> var targetNum; function showFormElements(oForm) { var targetNum = oForm.name; } $(document).ready(function() { $('#htmlForm'+targetNum).ajaxForm({ target: '#htmlExampleTarget'+targetNum, jQuery(this).children('input[name="MapaID"]').val(); success: function() { $('#htmlExampleTarget'+targetNum).fadeIn('slow'); } }); }); </script> Vdaka za kazdu radu |
||
_es Profil |
#5 · Zasláno: 11. 11. 2011, 18:11:55
Idigest:
„pokial viem var targetNum zabezpecuje, ze targetNum ma global scope.“ Lenže ty vytváraš vo funkcii showFormElements lokálnu premennú s takým istým názvom a teda sa v tej funkcii pristupuje k nej.
|
||
Idigest Profil |
#6 · Zasláno: 11. 11. 2011, 18:52:58 · Upravil/a: Idigest
taqkze, ked nedam do vnutra funkcie
var targetNum = oForm.name; , ale len: targetNum = oForm.name; tak sa pre targetNum zachova global scope? Vyskusal som, zial, nezachoval sa. |
||
Idigest Profil |
#7 · Zasláno: 12. 11. 2011, 23:02:46 · Upravil/a: Idigest
Idigest:
Zistil som, ze var tam nema byt, ak to ma byt global scope premenna. Ale aj tak to nejde. |
||
Idigest Profil |
#8 · Zasláno: 14. 11. 2011, 23:01:48
Napokon tu je, ako sa zdá, funkčné riešenie. Vivat!
$(document).ready(function() { $(':submit').click(function(e) { targetNum = $('form').has(this).prop('name'); $('#formTarget' + targetNum).ajaxForm({ target: '#divTarget' + targetNum, success: function() { $('#divTarget' + targetNum).fadeIn('slow'); } }); }); }); |
||
Časová prodleva: 12 let
|
0