2010-11-08 9 views
6

Devo inviare un solo valore di campo di input a uno script cgi tramite un modulo web.Come posso escludere i valori dei pulsanti radio del modulo HTML da inviare?

Ho aggiunto un paio di controlli di forma aggiuntivi (una casella di controllo e pulsanti di opzione) che manipolano il valore di input in base agli stati selezionati.

Quando il modulo viene inviato, vengono inoltrati anche i valori del campo modulo aggiuntivo che interrompono lo script cgi (a cui non ho accesso). Ho rimosso l'attributo 'nome' dalle caselle di controllo in modo che non vengano inviate ma non possono farlo per i pulsanti di opzione quando interrompe il loro raggruppamento.

Come è possibile impedire la trasmissione dei valori dei pulsanti di opzione?

risposta

12

È possibile aggiungere un attributo disabled nel gestore submit, in modo da impedire che vengano serializzati, tramite jQuery o una normale sottomissione <form>. Per esempio:

$("#myForm").submit(function() { 
    $(this).find(":radio, :checkbox").attr("disabled", true); 
}); 

Oppure si può .serialize() solo gli elementi che si desidera, ad esempio:

$.post("myPage.cgi", $("#myForm input[type=text]").serialize()); 
+0

che ha fatto il lavoro. Grazie. – pelms

+0

Per jQuery 1.6+, dovrebbe essere '.prop ('disabled', true)'. –

0

E 'anche possibile avere due forme differenti: uno che ha elementi di forma visibile e uno che ha un nascosto input che rappresenta il risultato finale da presentare. È possibile allegare i gestori onchange agli elementi del modulo visibile in modo che chiamino JavaScript per aggiornare il campo invisibile oppure è possibile eseguire una funzione come parte del gestore onsubmit per impostare il valore invisibile direttamente prima di inviarlo.

Ecco un jsFiddle dimostrando il secondo approccio (il gestore onsubmit): http://jsfiddle.net/gtU4J/

Problemi correlati