HighDots Forums  

Submit

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss Submit in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
maxsupermax
 
Posts: n/a

Default Submit - 05-23-2008 , 12:38 PM






Ciao, scusate ma ho bisogno di informazioni riguardo il submit.
Ho una sequenza variabile di campi in un form.
Ho in fondo 3 campi input di tipo submit con value differente e stesso name
che mi permettono di indentificare il tipo di comando da eseguire.
Funziona regolarmente (ma vorrei comunque sapere se cio' e' corretto da
farsi).
Se utilizzo uno script che in base mi risponde a un onmouseup come si fa (se
si puo) ad inviare un valore specifico come identificatore di azione?
es.:
<form name="f" action="x.php" method="post">
... vari input text
<input type="submit" name="comando" value="Modifica">
<input type="submit" name="comando" value="Inserisce">
<input type="submit" name="comando" value="Elimina">
</form>

Cosi' facendo ricevo in $_POST['comando'] il valore corretto dell'operazione
scelta.
Ma se eseguo in uno script:
document.f.submit()
non ricevo assolutamente nulla in $_POST['comando'] come se non esistesse
'comando' nel form
e nemmeno se provo ad attriburgli un valore prima del submit()
Non sono riuscito a trovare documentazione in giro forse pretendo troppo....
Grazie in anticipo a tutti
Felice programmazione a tutti
Max




Reply With Quote
  #2  
Old   
ZER0
 
Posts: n/a

Default Re: Submit - 05-23-2008 , 01:27 PM






maxsupermax <buono_nel_dna (AT) yahoo (DOT) it> wrote:

Quote:
Ho in fondo 3 campi input di tipo submit con value differente e stesso name
che mi permettono di indentificare il tipo di comando da eseguire.
Funziona regolarmente (ma vorrei comunque sapere se cio' e' corretto da
farsi).
Si, perché no.
Lato client devi solo ricordarti di avere un array di elementi, ma al
server arriverà solo un campo "comando": in quanto bottoni di submit,
il valore inviato sarà unicamente quello del pulsante premuto.

Quote:
Se utilizzo uno script che in base mi risponde a un onmouseup come si fa (se
si puo) ad inviare un valore specifico come identificatore di azione?
es.:
Di modi ce ne sono tanti. Ad esempio, puoi usare un campo "hidden", e
settarlo tramite javascript prima di fare il submit.

[cut]
Quote:
Cosi' facendo ricevo in $_POST['comando'] il valore corretto dell'operazione
scelta.
Esatto, questo per il motivo di cui sopra.

Quote:
Ma se eseguo in uno script:
document.f.submit()
non ricevo assolutamente nulla in $_POST['comando'] come se non esistesse
'comando' nel form
Ancora esatto, sempre per il motivo di cui sopra.

Quote:
Grazie in anticipo a tutti
De nada, se hai bisogno di delucidazioni chiedi.

Quote:
Felice programmazione a tutti
Grazie e altrettanto.

--
"Se c'è qualcosa di più importante del mio ego su questa nave,
la voglio catturata e fucilata."


Reply With Quote
  #3  
Old   
maxsupermax
 
Posts: n/a

Default Re: Submit - 05-23-2008 , 03:27 PM



Quote:
De nada, se hai bisogno di delucidazioni chiedi.

Si, approfitto, grazie...
uno stralcio del codice:

<form name="fissaggio" action="anag.php" target="anag" method="POST"
style="width:200px;">
<select name="tabella" class="inputselect" size="15" style="width:170px;"
title="Elenco Tipi Fissaggio" onmouseup="bbb()">
<?php
while ($sog =mysql_fetch_array($sogqry)) {
$opt = "<option
value='".$sog['id']."'>".$sog['descrizione']."</option>";
echo $opt;
}
?>
</select>
<input type="submit" class="butt" name="comando" value="Modifica"/><br>
<input type="submit" class="butt" name="comando" value="Inserisce"/><br>
<input type="submit" class="butt" name="comando" value="Elimina"/>
</form>

dove il richiamo a bbb() dovrebbe farmi inviare il form con il campo
"comando" impostato a "Modifica" come cioe' fosse premuto il corrispondente
pulsante submit:

cosa dovrei eseguire in bbb()?????
ho provato cosi':
function bbb() {
document.comando.value="Modifica";
document.forms['fissaggio'].submit();
}

ma non arriva nessun campo "comando"...
esiste qualcosa di simile a:
forms["fissaggio"].elements['comando'].click(); ???
O dovrei creare al volo in input hidden con nome 'comando' ?
Scusa e grazie comunque.
Ciao a tutti
Max





Reply With Quote
  #4  
Old   
ZER0
 
Posts: n/a

Default Re: Submit - 05-24-2008 , 02:52 AM



maxsupermax <buono_nel_dna (AT) yahoo (DOT) it> wrote:

Quote:
Si, approfitto, grazie...
uno stralcio del codice:
Già quello di prima era comunque sufficiente.

Quote:
select name="tabella" class="inputselect" size="15" style="width:170px;"
title="Elenco Tipi Fissaggio" onmouseup="bbb()"
[..]
dove il richiamo a bbb() dovrebbe farmi inviare il form con il campo
"comando" impostato a "Modifica" come cioe' fosse premuto il corrispondente
pulsante submit:
Mhm... perché hai usato l'evento onmouseup? E se uno seleziona tramite
tastiera il valore della select?

Quote:
input type="submit" class="butt" name="comando" value="Modifica"/><br
input type="submit" class="butt" name="comando" value="Inserisce"/><br
input type="submit" class="butt" name="comando" value="Elimina"/
Usi la chiusura dei tag aperti di XHTML per gli input ma non per i br;
è un po' incoerente. Adotta la stessa sintassi per tutti, quindi:

<br />

Invece di:

<br>

O meglio ancora, imposta il display dei pulsanti su "block", così puoi
eliminare i "br" alla fine (tramite CSS, ovviamente).

Quote:
cosa dovrei eseguire in bbb()?????
Come ti ho scritto, ci sono diversi modi. Puoi centralizzare le azioni
da eseguire in un campo hidden e impostare il valore di quello; oppure
come dici tu usare il metodo "click" sul pulsante che vuoi inviare.

Quote:
ho provato cosi':
function bbb() {
document.comando.value="Modifica";
document.forms['fissaggio'].submit();
}
Ti ho già detto che "comando" lato client è un array... e mi sa che ti
sei perso un po' di pezzi per strada (document.comando? E la form?).

Quote:
ma non arriva nessun campo "comando"...
Questo per il motivo sopra descritto.

Quote:
esiste qualcosa di simile a:
forms["fissaggio"].elements['comando'].click(); ???
Questo, ma ti devi ricordare che sei in presenza di un array.
Sul client, quando dai lo stesso "name" a un elemento form, ottieni un
array di elementi. Tu hai tre input chiamati "comando": in che modo tu
potresti riferirti a uno specifico elemento, tra quei tre? Metti caso,
per disabilitare il pulsante di Modifica.
Di certo, NON potresti fare come sempre, ovvero:

document.forms["fissaggio"].commando.disabled = true;

Perché anche il pulsante "Inserisci" e "Elimina" si chiamano così. Per
questo motivo il browser ti genera un array. Infatti se fai:

alert( document.forms["fissaggio"].comando.length )

Otterrai "3", che è il numero di controlli aventi tale name. Quindi se
vuoi riferirti al pulsante di modifica, che è il primo, dovrai fare:

document.forms["fissaggio"].comando[0].click();

In questo modo è come se tu avessi premuto il primo pulsante. Bada, se
però l'ordine dei pulsanti viene in qualche modo alterato, non hai più
la certezza che sia proprio quello di Modifica ad essere cliccato. Per
questo motivo, sarebbe bene tu usassi l'ID, che in quanto univoco, non
ti lega ad alcun ordinamento:

<input type="submit" name="comando" id="btn-modifica"
value="Modifica"/>
<input type="submit" name="comando" id="btn-inserisci"
value="Inserisce"/>
<input type="submit" name="comando" id="btn-elimina" value="Elimina"/>

E da JS, avresti:

document.getElementById("btn-modifica").click();

Per dover di cronaca, questo approccio è meno retrocompatibile: se hai
bisogno di supportare browser quali Netscape 4 o IE 4, non va bene. Ma
ormai è abbastanza raro che si tengano in considerazione in Javascript
dei browser che non hanno almeno il supporto per il getElementById.
C'è da dire che anche il metodo "click" non è usato nei browser troppo
vecchi, quindi in tal caso dovresti optare per un campo hidden.

Quote:
Scusa e grazie comunque.
De nada.

--
"Se c'è qualcosa di più importante del mio ego su questa nave,
la voglio catturata e fucilata."


Reply With Quote
  #5  
Old   
maxsupermax
 
Posts: n/a

Default Re: Submit - 05-24-2008 , 10:04 AM



Quote:
Ti ho già detto che "comando" lato client è un array... e mi sa che ti
sei perso un po' di pezzi per strada (document.comando? E la form?).

Si mi ero perso sull'array ora e' chiarissimo grazie.
Max




Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.