Newsgroup: it.comp.lang.javascript
Titolo: bottoni submit multipli con spot help

Ho un form che ha dei bottoni multipli di submit (a ogni bottone
corrisponde una action diversa del CGI sottostante) 
p.es
.
<INPUT TYPE="submit" VALUE="overview" 
onclick="this.form.func.value='overview'">
<INPUT TYPE="submit" VALUE="header view" 
onclick="this.form.func.value='headerview'">
Volevo aggiungere a tali bottoni uno spot help, e mi e' stato detto che
siccome "in NS il type submit non ha il gestore di evento onMouseOver,
Una soluzione e' creare un immagine del bottone e poi usare il type
image"
Effettivamente questo funziona per un bottone SINGOLO
<A href="javascript:void(0)" onMouseOver='window.status="testo di help"; 
return true' ><INPUT type="image" src="prova.gif"> </A>
pero' mi esegue il CGI con il valore di "func" preesistente (o il
default definito in un hidden input, o quello settato dall'onclick di
uno dei bottoni vecchi di submit, se li lascio)
Ho provato a mettere l'assegnamento del valore di func come onmouseover
<A href="javascript:void(0)" 
onMouseOver='window.status="testo di help"; 
this.form.func.value="overview" ; return true' >
<INPUT type="image" src="prova.gif"> </A>
o come onclick
<A href="javascript:void(0)" 
onMouseOver='window.status="testo di help";  return true'  
onclick='this.form.func.value="headerview"' >
<INPUT type="image" src="prova.gif"> 
ma ottengo un errore "Window.Document.URL.form has no property named
func". Quale e' la corretta referenza da usare ?
-- 
----------------------------------------------------------------------
nos...@ifctr.mi.cnr.it
 is a newsreading account used by more persons to
avoid unwanted spam. Any mail returning to this address will be rejected.
Users can disclose their e-mail address in the article if they wish so.

 func". Quale e' la corretta referenza da usare ?
[]
Il collegamento (link) non e' un elemento del modulo e quindi non puoi
agire indicandolo come this.form, la referenza dell'oggetto dovra'
essere completa document.nomeForm....
Inoltre, l'evento viene catturato dal collegamento e non passa all'input
type=image rendendone inutile l'uso.
La soluzione e' l'uso di un immagine interna al collegamento con
l'attivazione del modulo sul click del collegamento:
-----------------------
<A href="javascript:void(0)"
onMouseOver="document.form2.func.value='headerview';
window.status='testo di help';  return true"
onClick="document.form2.submit(); return false;">
<img type="image" src="prova.gif">
</A>
------------
Prova, cosi' dovrebbe funzionare.
Saluti, Paolo

 ------------
Si' ma ... come devo costruire la referenza ? Il form e' dentro una
frame di un frameset.
<frameset rows="30%,*">
<frame name="up" src="fitsform.html" noresize frameborder=0>
<frame name="down" src="blank.html" noresize frameborder=0>
e in fitsform.html il form e' definito (senza nome)
<form action="http:fits2www.cgi" target="down">
<INPUT NAME="func" TYPE=hidden value="overview">
ecc. ecc.
Per ora ho provato queste due forme (una volta risolta la cosa mettero'
il submit() nell'onClick), ma entrambe danno l'errore seguente
          Window.form has no property named 'func'.
la prima quando ci passo sopra col mouse, e la seconda quando ci clicco
(correttamente). Non dicono "form not existing".
<A href="javascript:void(0)" 
onMouseOver='window.status="testo di help"; 
top.up.form.func.value="overview" ;return true' >
<INPUT type="image" src="prova.gif"> </A>
<A href="javascript:void(0)" 
onMouseOver='window.status="testo di help";  return true'  
onclick='top.up.form.func.value="headerview"' >
<INPUT type="image" src="prova.gif"> </A>
OK, ci sono riuscito.
Posso farle funzionare entrambe (senza il submit) ma :
  - DEVO dare un nome al form (
p.es
. name="form1")
  - il riferimento non usa la frame, 
p.es
. 
    document.form1.func.value="overview"


     document.form1.func.value="overview"
[]
Se operi nella stessa pagina non serve fare riferimento ai frame.
Premesso che puo' essere piu' comodo dare un nome al form e riferirsi
con quello; c'e' anche la collezione forms dove trovi tutti i form della
pagina indicizzati (il primo e' 0); quindi come riferimento puoi
scrivere:
document.forms[0]    se e' il primo o unico form della pagina
se gli dai un nome es.: pippo (non usare mai nomi riservati come form
select...; va bene invece form1, selectA....) puoi fare riferimento con:
document.pippo
document.forms['pippo']
document.forms.pippo
Ricordi che il DOM di NS e' gerarchico; se il form e' interno a un
livello (es.: div position:relative/absolute), il form non si trova
nella collezione forms di document ma nella collezione forms del
document dello specifico livello
document.layers.nomeLayer.document.forms...
Saluti, Paolo