Newsgroup: it.comp.lang.javascript
Titolo: Sto impazzendo con un form!

Il metodo per inviare un form e' submit()
quindi se io metto in uno script
document.forms[stringacolnomedelform].submit() dovrebbe partire l'invio del
form.
E se creo una funzione:
function getPage(strId, strForm){
    document.forms[strForm].elements['ID'].value=strId;
    setTimeout("document.forms[strForm].submit()", 1000)
}
Lui si aspettera' di trovare un form che si chiami come il valore contenuto
nella stringa strForm, infilera' il valore strId nel campo ID, aspettera' un
secondo e poi dovrebbe fare submit...
il form e' questo:
<form name='nome' action='miaCGI' method='post'>
<input type='hidden' name='ID'>
</form>
Be', submit e setTimeout non vanno.
Se metto il campo ID visibile (type=text) vedo che viene riempito, quindi il
form viene trovato, ma non viene spedito.
AIUTO
ANdrea

 }
setTimeout viene eseguita dopo 1 secondo ma non all'interno della function
=> cos'è per lui strForm? nulla
    setTimeout("document.forms['"+strForm+"'].submit()", 1000) <=così
dovrebbe andare

 ha scritto nel messaggio
news:amc7bq$4hpui$1...@ID-147253.news.dfncis.de...

Mi sarebbe piaciuto se tu avessi avuto ragione.
setTimeout esegue la porzione di codice javascript indicata come primo
parametro dopo il numero di millisecondi indicato nel secondo parametro.
Quindi scrivere
setTimeout("document.forms['"+strForm+"'].submit()", 1000)
oppure
setTimeout("document.forms['strForm'].submit()", 1000)
e' la stessa identica cosa.
A riprova di cio' quando metto
setTimeout("alert(strForm)", 1000)
mi appare il nome del form dopo 1 secondo.
Inoltre: in un altra pagina c'e' uno script simile, ma con il nome del form
specificato dentro la funzione e funziona.
function getUtente(strId){
     document.forms[strForm].elements['ID'].value=strId;
     setTimeout("document.forms['utente'].submit()", 1000)
 }
Altra cosa divertente:
per chiamare la funzione io uso un link:
<a href='javascript:void(null)' onclick='getPage('12345678',
'utente')>vai</a>
be', il browser si apre su questa bella pagina:
http://javascript:void(null)
un mito.
Vabbe', io vado a pranzare, magari a pancia piena ragiono meglio, grazie per
il tempo che hai potuto dedicarmi.
Andrea

 il tempo che hai potuto dedicarmi.
Buon appetito, vado anch'io, poi vediamo chi dei 2 è stato preso dal morbo
della pancia vuota (ultimamente mi capita spesso...l'età?)

 della pancia vuota (ultimamente mi capita spesso...l'età?)
Io in genere non pranzo, ma oggi sto sognando il Gallo Nero (e le varie ed
eventuali, quelle che fanno male) di Catarsi.
Ho cosi' tante allucinazioni da cibo che le sto scrivendo qui dove non
c'entra nulla...

Sara' la fine della storia?
Alura: indubbiamente l'effetto fame deve aver scatenato qualcosa di
negativo, perche' ho pigliato una cantonata terrificante con la stringa
strForm che andava tenuta fuori da setTiemout, come giustamente indicato da
Cristiano, e non contento ho insistito facendo un test dove la stringa era
dentro un alert... messa come stringa *___*
Il sistema suggerito da Andrea ha funzionato, pero'... javascript:void(null)
e', o meglio, dovrebbe essere l'equivalente di href='#' onclick='return
false'.
Adesso il form spedisce... ma non specificando il nome del form nella
funzione e nemmeno invocando il metodo submit sul form desiderato.
Ho fatto questa cosa qua:
function getPage(strId, strForm){
    document.forms[strForm].elements['ID'].value = strId;
    setTimeout("document.forms[" + getNumber(strForm) + "].submit()", 1000)
}
dove getNumber e' un altra funzione:
 function getNumber(strName){
    for(var a=0; document.forms.length; a++){
        if(document.forms[a].name == strName){
            return a
        }
        else{
            return "errore"
        }
     }
}
E adesso a voi, se vi va, il simpatico giochino di scoprire perche' se gli
passo il nome del form questo non viene inviato, ma se gli passo l'indice di
un form che ha lo stesso nome non fa una grinza.
IE 6.0.26
E grazie per l'aiuto!
Andrea

>     setTimeout("document.forms[" + getNumber(strForm) + "].submit()",
1000)
se metti la variabile devi mettere le singole virgolette
("document.forms['"+strForm+"'].submit();
oppure hai 2 form con lo stesso nome

 ha scritto nel messaggio
news:amce60$4j1hl$1...@ID-147253.news.dfncis.de...

Ahemm... ho ripescato da CVS una delle versioni non funzionanti della
pagina.
Credi che se la visualizzazione degli errori e' disattivata e io metto una
stringa del genere:
setTimeout("document.forms[" + strForm + "'].submit()", 500)
possa accadere qualcosa?
*GROAN*
che testina che sono >^.^<
Ora funziona tutto
Andrea