2009-08-14 3 views
54

Eseguo serializzazione su un modulo, in cui uno dei campi è nascosto - ed è un campo molto importante, che dovrebbe essere pubblicato. C'è un modo per serializzare facilmente attraverso jQuery o dovrei scrivere la mia funzione?serialize non include campi nascosti

+4

'serialize' dovrebbe includere campi nascosti. Possiamo vedere il markup e lo script? – VoteyDisciple

+2

Gli unici campi che posso pensare che non dovrebbero essere inclusi sarebbero campi disabilitati. – Powerlord

+2

Serialize include i campi nascosti, ma non quelli disabilitati. ++ su voler vedere il markup e lo script. – 48klocs

risposta

103

Serializefa includono tutti abilitati input elementi con un attributo name.

+0

perché jquery usa l'attributo name per serializzare un form, invece di usare l'attributo id? – frabiacca

+11

@frabiacca Perché l'attributo 'name' è l'identificatore per i dati POST http://www.w3schools.com/tags/att_input_name.asp –

+0

Ho problemi con la casella di controllo che hanno visualizzazione stile/css: nessuno. Non vengono raccolti. –

2

Forse la combinazione dei due in un unico selettore funzionerebbe?

$(":input,:hidden").serialize(); 

modifica: ho appena provato quanto sopra e ha funzionato. ma, $ ("form"). serialize(); dovrebbe prendere automaticamente tutti gli input come altri hanno menzionato.

+0

Lo fa solo se ha un attributo name che finisce per essere la chiave dell'oggetto. –

1

Ecco una variazione strana su questo problema. I campi nascosti hanno nomi.

alert($("#myForm").serialize()) 

Apre correttamente una finestra con tutti i campi nascosti. Ma

$.post('myposts.php', $("#myForm").serialize(), function(data) { 
      $('#myResult').html(data); 
     }); 

Non ha i campi nascosti. Quando lo script php fa print_r($_POST) il nascosto e caselle di controllo sono Mising

+0

Hai mai capito perché questo sta accadendo? – bytebender

+1

ciò accade perché il tuo input è esterno (usa inspect elemento per vedere) l'attributo form, prima di postare puoi '$ ('your hidden html'). AppendTo ('# myForm');' –

0

si dovrebbe aggiungere il nome a tutti gli elementi per la funzione Serialize per funzionare correttamente

1

appena incontrato questo problema me stesso, e fatto trovare una soluzione.

Il problema ha a che fare con il modo in cui JQuery raccoglie informazioni html nascoste. Non prenderà in considerazione il TESTO di un campo nascosto come valore, è necessario utilizzare la proprietà value =.

per impostarlo in jQuery utilizzare $(field).val(yourvalue);

-2

ho avuto questo problema pure. Per abitudine chiudo i miei campi di input con />. Ho scoperto che l'input nascosto non funziona quando viene chiuso in questo modo.

<input type="hidden" name="someName" value="someValue" /> 

non funziona.

<input type="hidden" name="someName" value="someValue" > 

funziona.