Autor Zpráva
Idigest
Profil
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 *
target: '#htmlExampleTarget_' + jQuery(this).children('input[name="MapaID"]').val(); 
nefunguje?
Idigest
Profil
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
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
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
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
Idigest:
Zistil som, ze var tam nema byt, ak to ma byt global scope premenna. Ale aj tak to nejde.
Idigest
Profil
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');
}
});
});
});

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0