Newsgroup: it.comp.lang.javascript
Titolo: submit con più immagini nello stesso form

ho un form con più pulsanti di submit: modifica, cancella, ecc
vorrei sostituire i pulsanti con  delle immagini, con
document.itemForm.submit()
ma non so come fare a passare una variabile submit diversa per ogni immagine
cliccata...
Grazie, Cristiano

ma questi tasti cosa fanno? fanno il submit di form diverse, lo fanno sulla
stessa form cambiando una textbox hidden, cambio la action...
Comunque la logica è: sostituisci con una immagine, onClick setti la
variabile che vuoi e poi nomeform.submit()


questi tasti lavorano cosě:
<form name = "itemForm" action="operations.php">
...
<input type = "submit" name = "submit" value="modifica">
<input type = "submit" name = "submit" value="cancella">
<input type = "submit" name = "submit" value="copia">
<input type = "submit" name = "submit" value="inserisci">
</form>
poi nella pagina successiva lato server intercetto il valore della variabile
submit, e mi regolo di conseguenza.
Con le immagini non lo so fare, dovrei inviare la variabile submit al server
un campo hidden non credo, non sono in diversi form...
Cristiano

non sapevo che mettendo un value al tasto di submit questo venisse passato
come una parte della form...
normalmente (che io sappia) non si fa così; io mi muovo in questo modo:
a) campo hidden <input type=hidden name='azione'>
b) metti img e togli submit; onClick chiami function
salta(valore) {
 document.forms[0].item('azione').value=valore;
 document.forms[0].submit();
}
quindi se devi modificare chiami salta("modifica"), se  cancellare
salta("cancella") etc (e lato server leggerai azione)...
Curiosità: lato server leggevi "submit" e ti restituiva il valore corretto?
Interessante, da tenere a mente.

 Interessante, da tenere a mente.
si. questo serve perchè la action del form è sempre la stessa pagina, ma  a
seconda della variabile $submit agisce in maniera diversa.
Cristiano

 ha scritto nel messaggio
news:alrk6f$b4k$1...@serv1.albacom.net...


 Error: document.forms[0].item is not a function
:-O
function?? boh
prova con le tonde...document.forms(0).item(x)..... (che browser stai
usando?)

 Curiosità: lato server leggevi "submit" e ti restituiva il valore
corretto?
Ti restituisce quello che ti restituisce un tipico elemento della form,
ovvero il value.
E' una cosa ben documentata e non c'e' niente di strano.
Se hai ad esempio:
<input type=text name="txtTest" value="Niente">
<input type=submit name="btnAdd" value="Aggiungi">
avrai un (in get, post..)
txtTest=Niente&btnAdd=Aggiungi
A questo punto, e' sconveniente controllare il "value" per verificare
l'azione (che succede se fai una webapp localizzata? Che dipende dalla
lingua? Oppure ti chiedono di modificare il testo successivamente), e' molto
piu' utile controllare se la variabile btnAdd, come ho detto
precedentemente, esiste.
--------------------------------
Inviato via 
http://usenet.libero.it

 laato server me la cavo anche, ma con javascript sono una fetecchia...
document.forms[0].elements["azione"].value=valore;


 usando?)
Oddio, l'abbiamo perso :)


 Ti stai incasinando tra JScript lato client e JScript lato server, temo..
:)
Perché? document.forms[0] mi sembra corretto, idem item(x): se x è un numero
indica l'input progressivo nella form, se è un nome indica il name...ma
forse ho capito male cosa intendi? (in homesite di document.form non si
parla, parlano di document.forms); anche per elements: è effettivamente
indicato nel mio help (come "elements collection"), però sotto "forms
collection" indica di usare item
Riporto documentazione di homesite a proposito della forms collection:
The Forms Collection
Note : Both Netscape and Internet Explorer support the Forms collection
(Netscape call it an array). For properties, methods and events that are
supported by <FORM> elements, see the <FORM> topic.
The Forms collection is an ordered, indexed (in document source order)
array, containing a reference to every <FORM> element in a document.
Discrete form objects would normally be retrieved by their index in the
Forms collection (for example document.forms(0) contains a reference to the
first <FORM> element in the document), but a string value can be used, as
long as that string is a valid identifier (ID or NAME attribute value) for a
<FORM> in the document.
E.g.
document.forms('frmFeedback')
or
document.frmFeedback
both identify the same <FORM> in the document. The first method makes
scripts easier to read and understand though.
Properties
length
The length property returns the number of forms in the collection (and
therefore the document). Note that the length count starts at 1, not 0 as
the forms collection index does. Therefore, the length property may return a
value of 5, but to access the 4th form, you'd need to use
document.forms(3).property
Methods
item
The item method retrieves single items, or sub-collections from the all
collection. It accepts the following arguments:
documentforms.item(index, sub-index)
If index is a number, then the method returns a reference to the form object
at that position in the forms collections index. I.e.
strTag=document.forms.item(2).action
would make strTag equal to the ACTION attribute of the documents 3rd <FORM>
element. As you can see, this is effectively the long-hand version of using
document.forms(3).property.
If the index property is a string value, then the item method returns a
sub-collection, containing a reference to every element in the document that
has its ID or NAME attribute set to the string contained in the index
argument. To retrieve certain element objects from this sub-collection, the
sub-index argument must be used.

mah
io ho sempre usato item()...dici che è meglio usare elements?
Mi stai mettendo una pulce nell'orecchio (qualche anno che non uso le
form..), faccio 2 controlli...

Test effettuato, sintassi entrambe valide (ie5.5sp2):
<html><head><title>Test</title>
<script language='JavaScript'>
 function test() {
  alert(document.forms(0).item(0).value); //OK
  alert(document.forms[0].elements(0).value); //ok
 }
</script></head><body>
<form name='pippo'>
<input type=text name='Num' value='prova'>
<button onClick='test()'>
</form>
</body>
</html>

 io ho sempre usato item()...dici che è meglio usare elements?
Dico che in Javascript esiste solo elements.
Hai mai testato item() su NS4.x? Se vedi, nella reference di NS4.x non c'e'
nessuna funzione chiamata item.


 Test effettuato, sintassi entrambe valide (ie5.5sp2):
Perche' stai usando JScript.. Questa tipo di sintassi non ti funziona su
nessun altro browser.
Non e' Javascript, e' JScript.
Fai un test su NS4.x.


 collection. It accepts the following arguments:
Okay. A chi devo mandare una mail (Allaire? Macromedia? ) per dirgli di fare
una revisione dell'help..? :)


ah ecco, adesso ho capito
Grazie per la precisazione

 una revisione dell'help..? :)
Acquistato da macromedia...
Mi hai distrutto una certezza: il mio amato help homesite...sigh (è per
questo che ogni tanto trovo dei messaggi sulle form che non capivo, hai già
corretto in passato alcune sintassi e dicevo "mah, se lo dice lui...si vede
che preferisce usare quella sintassi anche se sono equivalenti"...)

 che preferisce usare quella sintassi anche se sono equivalenti"...)
Ci sono alcune sintassi che sono effettivamente equivalenti, ma che talvolta
ho "corretto" *solo* per amor di precisione.. O perche', anche se
normalmente funzionanti, se posti in determinati contesti potevano essere
fonte di ambiguita'.



no, non mi ero perso, stavo provando.
ora funziona (IE 5.5 e mozilla 1,0 ), ma solo con elements
<script>
function salta(valore) {
 document.filterForm.elements['azione'].value=valore;
 document.forms[0].submit();
}
</script>
</head>
<body>
<form action="b.php" name="filterForm" method="POST">
<input type=hidden name="azione">
<a href="javascript:salta('modifica')">invia</a>
</form>
nella pagina b.php mi trovo la mia bella variabile dell'array POST come
dovrebbe essere.
Grazie, Cristiano