2012-01-13 21 views
7

Sembra che ci siano diversi modi per presentare (POST) disabili campi modulo in jQuery:Il metodo migliore per inviare campi modulo disabilitati in jQuery?

  • Avere un campo nascosto che cambia quando l'ingresso cambia, e sostengono che
  • accoda manualmente le coppie chiave/valore su presentazione
  • valori Revert sul lato server (solo se i valori non dovrebbero cambiare)

mi chiedevo che (se presente) è considerata best practice per la presentazione campi del modulo disabili. Ovviamente readOnly è l'opzione migliore quando è disponibile, ma ho le caselle di controllo che devo inviare anche se sono disabilitate (a causa della logica aziendale). Mi rendo conto che questa non è una situazione ideale, ma raramente è il caso dello sviluppo web.

Esiste una best practice per l'invio di elementi di modulo disabilitati?

+2

Gli elementi del modulo disabilitato non devono essere inviati. Il modo corretto per farlo è creare input nascosti su submit. Ecco la documentazione HTML: http://www.w3.org/TR/html4/interact/forms.html#successful-controls – Dave

+0

@Dave Quindi stai dicendo che l'opzione 1 è la scelta migliore? Questo è quello a cui mi sono appoggiato. Inoltre, grazie per la documentazione. – Igor

+0

@GrailsGuy Per quanto riguarda la prima opzione, se si dispone di un campo modulo disabilitato, perché l'input cambierà mai? –

risposta

7

L'opzione migliore è rendere gli input in sola lettura: creare un evento click per le caselle di controllo che restituiscono semplicemente false e cambiano il loro colore di sfondo.

Non esiste una buona pratica, ma quella richiede il minimo disturbo.

5

Una quarta soluzione potrebbe essere quella di consentire le caselle di controllo prima di inviare il modulo:

$("form").submit(function() { 
    $("input:checkbox", this).prop("disabled", false); 
}); 

È possibile utilizzare un selettore più sofisticato se non si vuole riattivare tutte le caselle di controllo.

0

C'è un altro modo, se richiedono di inviare tutti o di alcuni ingressi disbaled:

  1. Step1: dare un nome nome della classe (ad es mod.).
  2. Step2: onSubmit, ha consentito tutti i quei campi seguenti l'esempio seguente:.

    $ ("ingresso [class = mod]") removeAttr ('disabilitato');

  3. Fase 3: i dati sul post

  4. Fase 4: Disattivare di nuovo quei campi (se necessario) seguendo l'esempio di seguito:.

    $ ("ingresso [class = mod]") attr ('disabilitato = "Disabilitato"');

Problemi correlati