Newsgroup: it.comp.lang.javascript
Titolo: Caricare pagine web con replace da una form

Salve,
Vorrei caricare una pagina con il comando " self.location.replace(url) " da
una form piuttosto che dall'action della form stessa, ma se vado a inserire
il comando javascript in action poi non mi posta i campi della form.Qualcuno
saprebbe darmi una soluzione?
grazie mille anticipate
Emanuele 

 saprebbe darmi una soluzione?
Non ne capisco molto il motivo, ma se vuoi che JS faccia qualcosa quando
invii un modulo, devi agire sull'evento onsubmit (attributo di <form> in
(X)HTML).
-- 
Ro!

 ha scritto nel messaggio 
news:130wsjn2wfvho$.1fdvnr2qukbk2$.dlg@40tude.net...


          OnSubmit="if ControllaForm() { self.location.replace(save.php) }">
Ci sono diversi errori:
1- in JS le condizioni sono raggruppate tra (), quindi:
	if (ControllaForm())
2- replace() è un metodo di location e i valori passati ai metodi vanno
raggruppati tra apici (singoli o doppi) se non sono variabili. Siccome
save.php è chiaramente una stringa, va fatto:
	location.replace("save.php");
3- quando vuoi operare su onsubmit, ti è sempre utile ritornare false (dopo
ti spiego)
4- come dice sempre Zer0 (ed io concordo appieno) in JS la prima lettera
maiuscola si usa per le classi (leggasi funzioni costruttore) mentre la tua
ControllaForm è una funzione comune, quindi ti consiglio di rinominarla in
controllaForm.
5- La verifica ti conviene farla direttamente dentro controllaForm (ti sarà
più comodo in futuro agire sul suo funzionamento avendo tutto sottomano
piuttosto che codici e verifiche sparsi qua e la') e non fuori, quindi io
farei:
<form onsubmit="return controllaForm();">
<!--
gli altri attributi di form li ometto ma tu aggiungili.
In controllaForm:
-->
function controllaForm()
{
	if (condizione)
	{
		// fai tutte le verifiche
		// che intendi fare
		return false;
		alert("Ora fai il redirect");
		location.replace("save.php");
	}
}
Ho buttato giù giusto uno scheletro di come farei io, spero ti possa essere
utile.
-- 
Ro!

 		location.replace("save.php");
Ehm... lo fa mai il replace?
-- 
Nando [?]
Apostolo della Prova

 ha scritto nel messaggio 
news:rq8tcixursb4$.1rp49d5tb71ky.dlg@40tude.net...


 Ehm... lo fa mai il replace?
Guarda l'ho scritta al volo nel newsreader, ma ad occhio mi sembra di sě.
Cosa ti "sconfinfera"?
-- 
Ro!

 Cosa ti "sconfinfera"?
Quando esegui l'istruzione return, la funzione non termina immediatamente?


 In pratica mi fà la replace ma non posta i campi.
Ma scusa, allora perché fai tutto 'sto lavoro?
metti action="save.php"
e se controllaForm() verifica che i campi sono a posto, fai un bel return
true. Quindi:
<form action="save.php" onsubmit="return controllaForm()">
function controllaForm()
{
	if (condizioneErrata)
	{
		alert("Qualcosa non va");
		return false;
	}
	else
	{
		alert("Tutto ok!");
		return true;
	}
}
PS: occhio al quoting
-- 
Ro!

 una form piuttosto che dall'action della form stessa,
Non puoi.
location.replace gestisce url, al massimo puoi usare il metodo per passare i
dati via get, non di certo in post.
-- 
Chuck Norris fuma toscani. Vivi.

 Quando esegui l'istruzione return, la funzione non termina immediatamente?
C'hai ragggione, porcaccia mai usare il newsreader al volo :)
-- 
Ro!

 C'hai ragggione, porcaccia mai usare il newsreader al volo :)
Perché, io lo faccio continuamente.
Quello era un erroraccio di quelli brutti, perň. Magari sono stati i morsi
della fame, vista l'ora... (la cosa "bella" č che sei stato "recidivo" ;) )
-- 
Durante l'ultima cena, Chuck Norris ha spezzato il pane. E il tavolo. E tutti
i commensali.

 C'hai ragggione, porcaccia mai usare il newsreader al volo :)
Qualcuno dovrebbe progettare un ambiente di sviluppo integrato nel
newsreader :)


 della fame, vista l'ora... (la cosa "bella" č che sei stato "recidivo" ;) )
Eh sě č proprio brutto... aio' capita. Non credo sia la fame, forse la
segretaria sotto alla scrivania (e stavolta non č tardi nč?! ;)
-- 
Ro!

<form action="save.php" onsubmit="return controllaForm()">
In questo modo non faccio il replace della pagina e quando faccio indietro 
mi ridà i dati che ho inserito.
In pratica ho una pagina insert.php dove c'è la forma che chiama save.php 
che registra i dati e successivamente (se tutto fila liscio) richiama con il 
metodo replace di nuovo insert.php in modo da ritrovarmi la pagina 
d'inserimento pulita.
Ora se anche la form chiamasse la pagina save.php con la replace quando 
clicco indietro del browser non avrei più insert.php (e quindi i dati già 
inseriti).
Ma da quello che ho capito no si può postare se si fà la replace e quindi 
nisba.
Forse dovrei postare i dati con il javascript stesso?
Ciao e grazie lo stesso. 

 ha scritto nel messaggio 
news:awmibey0dtce$.dlg@ID-171124.news.individual.net...


 Forse dovrei postare i dati con il javascript stesso?
Puoi usare per l'appunto quel XmlHttpRequest. Lo hai mai usato?
-- 
Ro!

 Puoi usare per l'appunto quel XmlHttpRequest. Lo hai mai usato?
No.
Intanto mi informo poi eventualmente se incontro qualche problema e, se 
gentilmente vorrai rispondermi (non vorrei scocciarti), ti farò sapere.
Ciao Emanuele 

 gentilmente vorrai rispondermi (non vorrei scocciarti), ti farņ sapere.
Buono studio, nel caso siam tutti qui.
-- 
Ro!

 un chiodo?!)
Per quello che serve all'OP, non potrebbe essere utile, nella pagina con la
form, mettere qualcosa del tipo
  window.onload=function() {document.nomeform.reset()}
?
Funzionerebbe?


 Non si può postare con javascript?
No.
Solo tramite l'oggetto XmlHttpRequest che ti mette a disposizione il browser.
Va visto se la sua implementazione non ti sconvolge la struttura attuale della
tua "applicazione".
Inoltre XmlHttpRequest non è certo supportato allo stesso modo di una form o
del metodo replace. Ci sono diverse considerazioni da fare in merito
(soprattuto se stiamo parlando di un sito, e non di una web application tipo
GMail per intenderci).
-- 
Da una costola di Adamo nacque Eva. Da una costola di Chuck Norris nacque
Wonder Woman.

 segretaria sotto alla scrivania (e stavolta non č tardi nč?! ;)
Eh no, questa scusa te la sei giocata quando sono stato io a suggerirtela. :)
Devi trovarne una in modo autonomo.
O, alternativamente, pagarmi le royalties. :P
-- 
Chuck Norris guarda la videocassetta di "The ring" tutte le sere e il suo
telefono non squilla mai.

 form, mettere qualcosa del tipo
La cosa migliore sarebbe gestire la cosa server-side, così com'è sempre stato
fatto.
-- 
Il cavallo bianco di Chuck Norris è nero.

 fatto.
Uhm... spiegami un attimo, ti va?
