sostituire bottone con onchange submit

massimassi

Nuovo Utente
25 Feb 2013
5
0
0
Ciao a tutti.
Ho bisogno di fare una modifica ad un codice per permettere la sottomissione di un form attraverso il cambio di selezione di un menu a tendina.
Attualmente questo viene fatto con un bottone.
Non essendo un programmatore, ho cercato parecchio per una soluzione, ma questo caso è un pò diverso da quelli che ho trovato in rete, visto deve inviare anche il contenuto di un campo di testo oltre che al valore selezionato nel menu a tendina.
Il codice è questo:
HTML:
<form action="" method="post">
<input class="field" type="text" size="{$input_size}" maxlength="{$input_size}" value="{$prox_cap_flt}" onfocus="if(this.value=='{$prox_cap_flt}')this.value='';" name="set_cap_flt" />
<select class="field" name="set_cap_flt_dist">
<option value="">ALL</option>
{foreach from=$opts item=o}
<option {if $o.sel}selected="selected"{/if} value="{$o.dist}">{$o.dist}</option>
{/foreach}
</select>
<input type="submit" name="submit_cap_flt" value="GO" class="button" />
<input type="submit" name="clear_cap_flt" value="RESET" class="button" />
</form>

Per quello che ho capito dovrei cancellare le due righe relative ai bottoni (uno per fare il submit e l'altro del reset che vorrei levare del tutto) e inviare "submit_cap_flt" usando onchange=“submit()" dentro la riga che inizia con "<select".
Ho fatto vari esperimenti ma senza risultati, a parte il fatto che la pagina si ricarica e basta.

Qualcuno mi può aiutare?
Grazie mille.
mass
 
Ultima modifica di un moderatore:
ciao
HTML:
<!-- ................-->
<script type="text/jscript">
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "pallo.php";
            document.modulo.submit();
        }
</script>
<!-- ................-->
<select name="pinco" id="pinco" onchange="selectPost()" >
  <option value="aa">aa</option>
  <option value="bb">bb</option>

</select>
<!-- ................-->
così togli i submit
 
ciao
HTML:
<!-- ................-->
<script type="text/jscript">
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "pallo.php";
            document.modulo.submit();
        }
</script>
<!-- ................-->
<select name="pinco" id="pinco" onchange="selectPost()" >
  <option value="aa">aa</option>
  <option value="bb">bb</option>

</select>
<!-- ................-->
così togli i submit

Grazie Borgo Italia per la risposta così rapida!
Però ancora non ho capito come applicarla al mio form:(

Da quel che capisco, da non programmatore, le righe di script dovrebbero definire quello che il form fa con <form action="" method="post".
In "<select" fa la selezione dal menu a tendina e poi il submit.

Qui ho un paio di problemi:
- nel mio form, quando definisce "action" non ho nessun file a cui inviare ( dovrei quindi fare così: document.modulo.action = ""; o document.form.action=""; ?)
-il mio form invia sia il valore dal menu a tendina, che il valore inserito in un campo di testo. il bottone credo lo faccia con "name="submit_cap_flt".
Come lo utilizzo nel codice che mi hai mandato?

Grazie ancora.
mass
 
ciao
guarda questo, forse capisci meglio
ricordati che in document.modulo.... modulo è il name del form se al form dai name="sempronio" devi mettere document.sempronio...
poi se guardi (usi php?) nel document.modulo.action ho messo al posto del nome della pagina a cui inviare (da qualche parte devi inviare)
"<?php $_SERVER['PHP_SELF']; ?>" che vuol dire che l'action fa riferimento a se stessa
PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
<script type="text/jscript">
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "<?php $_SERVER['PHP_SELF']; ?>";
            document.modulo.submit();
        }
</script>
</head>
<body>
<?php
if(isset($_POST['pinco']) && $_POST['pinco'] !=""){
	echo $_POST['pallo']."<br />";
	echo $_POST['pinco']."<br />";
}
?>

<form name="modulo" method="post">
<input name="pallo" type="text">
<select name="pinco" id="pinco" onchange="selectPost()" >
  <option value="">seleziona</option>
  <option value="aa">aa</option>
  <option value="bb">bb</option>
</select>
</form>
</body>
</html>
 
ciao
guarda questo, forse capisci meglio
ricordati che in document.modulo.... modulo è il name del form se al form dai name="sempronio" devi mettere document.sempronio...
poi se guardi (usi php?) nel document.modulo.action ho messo al posto del nome della pagina a cui inviare (da qualche parte devi inviare)
"<?php $_SERVER['PHP_SELF']; ?>" che vuol dire che l'action fa riferimento a se stessa
PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
<script type="text/jscript">
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "<?php $_SERVER['PHP_SELF']; ?>";
            document.modulo.submit();
        }
</script>
</head>
<body>
<?php
if(isset($_POST['pinco']) && $_POST['pinco'] !=""){
	echo $_POST['pallo']."<br />";
	echo $_POST['pinco']."<br />";
}
?>

<form name="modulo" method="post">
<input name="pallo" type="text">
<select name="pinco" id="pinco" onchange="selectPost()" >
  <option value="">seleziona</option>
  <option value="aa">aa</option>
  <option value="bb">bb</option>
</select>
</form>
</body>
</html>

Non sono sicuro di poter usare il php all'interno di questo template (smarty), però nei prossimi giorni provo e vedo se riesco a farlo funzionare.
Comunque, grazie di nuovo per i tuoi suggerimenti e soprattutto per la tua disponibilità!
mass
 
ciao
se non puoi usare php o altro linguaggio dinamico a che ti serve il form?

Il form serve per filtrare dei risultati di ricerca di un cms. Devo informarmi meglio nel manuale. mmmm forse si può ma non è consigliato. Oggi sono stato in full immersion con la burocrazia, e forse anche domani, però appena metto i tuoi consigli all'opera ti aggiorno nel forum.
Perdonami se non sono preciso ma non sono un programmatore. Eviterei di mettere il naso dentro questa matrix, ma al momento devo farlo:)
 
Alla fine per caso ho trovato il modo di farlo quasi funzionare, usando un pezzo di codice dello stesso cms.
H modificato il codice del form in questo modo:

HTML:
<form action="" method="post" id="cap">

<input class="field" type="text" size="{$input_size}" maxlength="{$input_size}" value="{$prox_cap_flt}" onfocus="if(this.value=='{$prox_cap_flt}')this.value='';" name="set_cap_flt" />

<select class="field" name="set_cap_flt_dist" onchange="$('cap').submit()">
<option value="">ALL</option>
{foreach from=$opts item=o}
<option {if $o.sel}selected="selected"{/if} value="{$o.dist}">{$o.dist}</option>
{/foreach}
</select>

<input type="hidden" name="submit_cap_flt"/>
<!--  ####commentata <input type="submit" name="clear_cap_flt" value="RESET" class="button" />-->
</form>

Ora però mi son reso conto che vorei anche avere modo di azzerare il filtro attivato da questo form. Devo trovare il modo di avere l'opzione per fare il "submit" di "clear_cap_flt".
Pensavi di fare così:
-In questa riga (<input type="hidden" name="submit_cap_flt"/>) sostituire "submit_cap_flt" con una variabile, chessò, tipo "cap_flt_reset".
-Aggiungere un'opzione alla dropdown, tipo <option value="RESET">RESET</option>
-Introdurre una routine (si chiama così?) if-else dentro onchange=".....",in modo che a "cap_flt_reset" venga attribuito il valore "submit_cap_flt" sempre, tranne quando viene selezionato "RESET"; in quel caso "cap_flt_reset" diventerà "clear_cap_flt".
-Poi fare il submit con $('cap').submit() come è ora.
Si può fare? Come?
mass
 
Ultima modifica:

Discussioni simili