Autor Zpráva
aDAm
Profil
Zdravím,
řeším teď jeden problém. Mám na stránce odeslání formuláře pomocí ajaxu, tohle mi šlape dobře. Po zpracování dotazu se jako response vrací část html která nahradí právě zobrazený. Tohle je taky ok.
Ale problém nastane když s tímto novým obsahem chci dále pomocí js pracovat. Chybí mi tam totiž ten nový obsah a tlačítka pracují stále s tím původním co byl nahrazen.

Nemá někdo s tímto zkušenosti? Jde nějak znovu načíst sturktura stránky? Zkoušel jsem strýčka google ale nic :(
Chamurappi
Profil
Reaguji na aDAma:
Pokud plácneš do innerHTML nějaký kód, prohlížeč si ho rozebere a přetvoří DOM prakticky okamžitě. Není třeba nic volat.

tlačítka pracují stále s tím původním co byl nahrazen
Děláš někde chybu.

Proč nepředložíš rovnou odkaz na živou ukázku? Proč nikdo nikdy nedává odkaz? Proč každý čeká na vyzvání?
aDAm
Profil
no odkaz na to kde to testuji nemam, dělám to na localu a cele je to součástí CMS a na ostrou verzi to hodit nemůžu

zkusím víc popsat.
načtu stránku kde je formulář s javascripte pro jeho odeslání. Formulář vyplním, kliknu na tlačítko provede se odeslání pomocí ajaxu a response tohoto je plácnuto do divu.
Vše se zobrazuje korektně, ale problém nastane když na stránce zavolám funkci která má stejne jméno jako na předešlé stránce.

Tato funkce se stará o poslání formuláře ajaxem:
function submitajaxformreload( pressbutton ) {
	$('dataForm').getElements('input[name=task]').setProperty('value', pressbutton);
	$('dataForm').getElements('input[name=ajax]').setProperty('value', 1);
	
	// Odeslani formulare s daty
	$('dataForm').send({
		evalScripts: true,
		onComplete: function(response){
			$('inset').setHTML(response);
		}
	});
}
Leo
Profil
"Proč nikdo nikdy nedává odkaz? Proč každý čeká na vyzvání?"

aDAm uz par duvodu napsal, pokud by na jakpsatweb bylo misto pro upload spustitelneho kodu, tak pak teprve snad by vase prani byvalo obcas vyslyseno. Ale kod poslat muzou, to je pravda. Leo
aDAm
Profil
ještě teda doplním html kde se to zpracovava:

První formulář:
<div id="inset">
	<script language="javascript" type="text/javascript">
	<!--
		function submitbutton( pressbutton ) {
			var form = document.adminForm;

			if ( pressbutton == 'cancel' ) {
				submitajaxformreload( pressbutton );
				return;
				
			} else {
				// do field validation
				if ( trim( form.title.value ) == "" ) {
					alert( "<?php echo _CONTENT_JAVA_MESS_FILL_TITLE; ?>" );
					
				} else if ( form.catid.value == 0 ) {
					alert( "<?php echo _JAVA_MESS_SELECT_CATEGORY; ?>" );
					
	 			} else if ( form.catid.value == "" ) {
	 				alert( "<?php echo _JAVA_MESS_SELECT_CATEGORY; ?>" );
	 				
				} else {
					tinyMCE.triggerSave( true, true );
					submitajaxformreload( pressbutton );
					return;
				}
			}
		}
	-->
	</script>
	<div id="page">
	<div id="pagein">
		
		<form action="index2.php" method="post" name="adminForm" id="dataForm">
		<p>
			<input type="hidden" name="cid" value="<?php echo $row->id; ?>">
			<input type="hidden" name="version" value="<?php echo $row->version; ?>">
			<input type="hidden" name="option" value="<?php echo $option;?>">
			<input type="hidden" name="task" value="">
			<input type="hidden" name="ajax" value="0">
		</p>
		
		....vlastni telo formulare...
		
	</div>
	</div>
</div>


a obsah toho DIVu s ID "inset" je pak nahrazen výsledkem (viz javafunkce výše)

v tom výsledku je třeba taky podobný formulář který využívá stejnou funkci submitbutton() ale tato má již jiné podmínky.
Tady je právě ten problém, když se zavolá stejna funkce (název) tak stále se zpracovává ten předešlý formulář, resp vyskakujou hlášky že není vyplněn.
jso
Profil *
aDAm
mám podobný problém, ale zatím také nevím, jak jej vyřešit.
Pomocí ajax načítám data, které zobrazuji v tabulce. Pro přehlednost zvýrazňuji aktuální řádek (ten pod myškou) pomocí js a css. Pokud ajaxem načtu tabulku, zvýraznění nefunguje.

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