2012-11-29 13 views
20

Un altro programmatore mi ha detto che era "cattiva pratica" utilizzare i campi nascosti nel mio codice HTML. Essenzialmente ho un elenco non ordinato che un utente seleziona un elemento in base a una categoria selezionata (le categorie sono immagini). Quindi chiama javascript per impostare un campo nascosto sul valore selezionato dall'utente in modo che possa inviarlo quando il modulo inviato. Questa è una pratica veramente negativa, c'è un altro modo in cui dovrei farlo?È una cattiva pratica usare campi nascosti?

+2

Forse dovresti chiedere a lui/lei prima perché lui/lei pensa così ... – Christophe

+0

È davvero "cattiva pratica" se stai cercando di nascondere qualcosa all'utente (come se hai intenzione di inviare il loro indirizzo email su HTTP senza dirlo). Non c'è niente di sbagliato nell'utilizzare campi nascosti se è appropriato. –

+11

Non male pratica, pratica comune.A seconda dell'implementazione, potresti avere problemi di accessibilità, ma ti suggerirei di ignorare il tuo collega o ottenere maggiori dettagli da lui. –

risposta

2

Generalmente è una cattiva abitudine memorizzare il valore javascript in HTML DOM. Dovresti provare a creare una lista memorizzata nel tuo ambiente javascript.

window.myList = new Array(); 

vi consiglio di usare qualcosa come Underscore.js o anche Backbone.js quando si hanno un sacco di roba.

Se si utilizzano questi dati solo sull'invio, il caso sembra legittimo.

+0

"Se si utilizzano questi dati solo sulla sottomissione" Bene, questo sarebbe uno svantaggio dell'accessibilità se la stessa funzionalità non funziona senza JS, ma di nuovo ciò dipende da ciò che il cliente desidera. – feeela

3

Questa è una pratica molto comune. L'unico problema che posso pensare nel tuo caso è che si interromperà se il tuo visitatore ha JavaScript disabilitato, quindi potresti volere un fallback.

4

esistono campi nascosti in modo che si possa impostare un valore in un modulo senza visualizzare un input, non riesco a capire come sia una cattiva pratica usarli. se devi creare un widget personalizzato e inviare il suo valore tramite un modulo è il modo più semplice per farlo, puoi comunque utilizzare i pulsanti di selezione con le liste di selezione dinamiche, ma dovrai fare brutti scherzi per rendere l'interfaccia più carina.

3

Se si desidera inviare un modulo ed è necessario passare alcuni valori semplici che non sono contenuti nei campi del modulo visibile, un campo nascosto è probabilmente il modo più vecchio, più affidabile e più pulito di farlo.

considerare le alternative:

  1. inutili: non passare nulla nascosto.

  2. Scadente: astrazioni, come ASP.Net viewstate che utilizza comunque un campo nascosto ma inquina il modello di richiesta (e può aggiungere un mucchio di dati non necessari a meno che non si presta attenzione e la maggior parte delle persone non lo sia).

  3. BAD: passare tutti i valori del modulo sulla stringa di query. Questo di solito non è RESTful e può essere decisamente dannoso (segnalibri dell'utente una querystring che esegue un'azione inaspettata).

  4. Forse: valori POST manualmente utilizzando AJAX. Questa può essere un'implementazione molto valida, assumendo che si desideri eseguire solo un'operazione asincrona.

  5. Forse: Full roundtrip in cui il server gestisce la modifica (potrebbe essere l'unico modo per supportare gli utenti senza JavaScript).

0

È una cattiva pratica utilizzare campi nascosti per informazioni che devono essere sicure. Quando non ci sono problemi di sicurezza, generalmente è bene usare campi nascosti.

+4

dovresti fornire ragioni e riferimenti. – valentinas

+0

Cosa ti impedisce di crittografarli? Questo non è un argomento perché questo è lo stesso problema per qualsiasi dato sulla pagina su qualsiasi controllo o campo. – Aristos

+0

Non è lo standard di StackOverflow che è necessario fornire riferimenti. Quindi il commento di valentinas è oggettivamente falso. Altre due cose: sto difendendo l'ipotesi nulla che non ci siano problemi, quindi è difficile da dimostrare. Inoltre, è un problema di tipo comune-sensuale. Ora, non è sbagliato usare campi nascosti; esistono per una ragione. Sono una grande comodità e sono quasi da usare quando lo stato della prossima richiesta è contenuto nella pagina in cui ti trovi. (Ad esempio, l'ordinamento di una lista). – Joe