Newsgroup: it.comp.lang.javascript
Titolo: form e submit

ho un problema a cavallo tra html e javascript...
praticamente ho una form con text, option etc.
il bottone per sottomettere i dati mi da' alcuni problemi:
innanzitutto io ho la necessita' di inviare solo parte dei dati immessi,
quindi il semplice "bottone grigio" con le sue funzionalita' standard
(creare automaticamente una query accodando nome e valore di tutti gli
elementi della form) non mi va bene... lo posso pero' usare lo stesso per
sfruttare l'evento onSubmit associandogli una funzione javascript
[validate()] che una volta validata crei la mia query.
altro problema, il tasto di sottomissione dei dati deve essere possibilmente
un'immagine...
allora ho provato 2 strade:
<FORM onSubmit="return validate()">
<input type="image" src="../images/segue.jpg">
</FORM>
in questo modo pero' mi viene creata una query fittizia...
succede che la mia funzione javascript rimanda ad una pagina e il pulsante
ad un'altra del tipo:
nomequery?x=10&y=10
<a href="#" onClick="return validate()">
<img src=../images/segue.jpg border=1></a>
in questo caso pero' il # crea l'effetto spiacevole di rimandare una pagina
scrollabile al suo inizio, spostandosi dalla posizione in cui si trova il
bottone, quando la funzione javascript da' esito positivo...
come posso risolvere i 2 problemi?
ho trovato delle soluzioni macchinose che non sto neanche a raccontare,
pero' mi piacerebbe risolvere se possibile queste due situazioni nel modo
corretto
grazie
Alessandra

nomequery?x=10&y=10
Se è solo un problema di quello che viene visualizzato nella status bar,
puoi usare un POST.
OK, non è elegante, raramente il mio codice lo è, ma presenta un grosso
vantaggio: funziona; però lo script dall'altra parte deve verificare le
variabili in modo diverso (se è ASP, per esempio, anziché
request.querystring deve usare request.form; suppongo che i CGI abbiano
anche loro le loro differenze).
Oppure potresti metterla in un form a parte e utilizzare
onclick="form1.submit;return true".
Invece, per l'altra soluzione, puoi semplicemente usare un <a href="">; in
teoria dovrebbe bastare; oppure puoi controllare gli ultimi l caratteri
della stringa della location (document.location o window.location, non
ricordo bene), dove l è la lunghezza della stringa che contiene  il nome
della pagina destinazione.
                o------------------o
                 |  Alessandro  |
                o------------------o

della pagina destinazione.
non ho capito bene....
ciao e grazie per l'aiuto
Alessandra

mi sono accorta di non aver spiegato bene il mio problema...
cerco di renderlo piu' generico:
diciamo che nella mia pagina c'e' un bottone che va premuto per far eseguire
un certo codice javascript, in particolare una funzione [validate()] che
restituisce un valore booleano...
in generale un pulsante del tipo:
<FORM METHOD="get" ACTION="pagina2.htm" onSubmit="return validate()">
<input type="submit">
</FORM>
funziona in questo senso...
ma il mio problema e' quello di dover usare come pulsante un'immagine e di
non poter mostrare l'url (in questo caso pagina2.htm) che va lanciata se la
funzione validate() ritorna true, se non nel codice javascript
come posso farlo con un oggetto del tipo
<input type="image" src="../images/segue.jpg">
oppure con un semplice link su un'immagine?
<a href="#" onClick="return validate()"><img src=../images/segue.jpg></a>
evitando i problemi di cui parklavo nel messaggio precedente?
grazie ancora
Alessandra

funzione validate() ritorna true, se non nel codice javascript
E se la funzione cambiasse l'action?
Mi spiego: usi
<FORM METHOD="GET" ACTION="" onSubmit="return validate()" NAME="form1">
e in validate metti
if (condizione){
document.form1.action='pagina2.htm';
return true;
}
non sono sicuro se document.form1.action debba anche avere il .value, ma il
concetto è quello.
Oppure usi
<a href="pagina2.htm"><img src="immagine.gif"
onmouseOver="window.status='testo qualsiasi';return true "
onMouseOut="window.status=' ';return true "></a>
anche qui, non sono sicuro se l'onmouseover e l'onmouseout debbano essere
quelli dell'<img> o quelli dell'<a>, ma il principio è quello.
                o------------------o
                 |  Alessandro  |
                o------------------o
P.S. Sorry per il lapsus della status bar / location bar :-)

Se non hai risolto ancora questo problema perche non cerchi di descriverlo
in modo chiaro senza rimandare a messaggi postati precedentemente (ti
assicuro che è davvero difficile seguire un problema implementativo
descritto "a puntate"),
ManInLeather
**** Posted from RemarQ - 
http://www.remarq.com
 - Discussions Start Here (tm) ****