Perchè non si riescono a settare dinamicamente i parametri di una pagina HTML?

rsuprani

Nuovo Utente
28 Dic 2014
1
0
0
Salve!
Parto da questo esempio che vorrei poi estendere a casistiche più complesse
Ho questo codice che riporto qui sotto

<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
<script type="text/javascript">
function Button()
{
document.MiaForm.action = "Pippo.php?id=1";
return true;
}
</script>
</head>
<body>
<form method="get" name="MiaForm">
<input type="submit" value="Button" onclick="return Button()" />
</form>
</body>
</html>


Il mio obiettivo è quello di modificare dinamicamente la action della mia form in modo che al click sul pulsante venga richiamata la pagina "Pippo.php" con il parametro ID valorizzato a 1.
Certo che la cosa avrebbe funzionato senza problemi, metto in esecuzione il mio codice e scopro con enorme sorpresa che al click sul pulsante viene richiamata la pagina Pippo.php senza però la valorizzazione del parametro id.
Provando ad analizzare il codice javascript in debug, tutto sembra funzionare senza problemi e la proprietà action della form viene impostata correttamente al valore atteso (quindi nome pagina seguita dalla sua query che valorizza il parametro id).

Ci sono spiegazioni per tutto questo?

Grazie
Riccardo
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, provo a spararne una anche se di preciso non lo so.
Il method get aggiunge all''url della action i valori presenti nel form, evidentemente se ne infischia se nell'url sono presenti altri parametri. Se provi a sostituite il method con post vedrai che passa anche l'id.
Una soluzione potrebbe essere quella di creare un input hidden con javascript e aggiungerlo al form.
Codice:
<script type="text/javascript">
    function Button()
    {        
        var input = document.createElement("input");
        input.type = "hidden";
        input.name = "id"; 
        input.value = 1; 
        document.MiaForm.appendChild(input);
        document.MiaForm.action = "Pippo.php";
        return true;
    }
</script>