267 votes

Les valeurs des entrées désactivées ne seront pas soumises

C'est ce que j'ai trouvé avec Firebug dans Firefox.

Est-ce que c'est la même chose dans les autres navigateurs ?

Si oui, quelle en est la raison ?

29 votes

Vous pouvez définir un attribut "readonly". Chrome, par exemple, le rend comme un champ désactivé mais le soumet.

6 votes

353voto

Fred K Points 1370

disabled l'entrée ne soumettra pas de données.

Utilisez le readonly attribut :

<input type="text" readonly />

Source ici

0 votes

@FrankFang, Ok, mais, quand je passe des données au modèle de lame du collectif Laravel. Cela ne fonctionne pas. Je ne peux pas envoyer de données de cette façon.

0 votes

@ssi-anik readonly fonctionne, assurez-vous simplement de passer l'attr "name" à l'entrée.

0 votes

Est readonly une norme acceptée ? Selon developer.mozilla.org/fr/US/docs/Web/HTML/Attributs/readonly ça n'en a pas l'air.

218voto

Aziz Points 7500

Oui, tous Les navigateurs ne doivent pas soumettre les entrées désactivées, car elles sont en lecture seule.

Plus d'informations (section 17.12.1)

Définitions des attributs

désactivé [CI] Lorsqu'il est défini pour un contrôle de formulaire, cet attribut booléen désactive le contrôle pour les entrées utilisateur. Lorsqu'il est défini, l'attribut disabled a les effets suivants sur un élément :

  • Les commandes désactivées ne sont pas mises en évidence.
  • Les contrôles désactivés sont ignorés dans la navigation par tabulation.
  • Les contrôles désactivés ne peuvent pas réussir.

Les éléments suivants prennent en charge l'attribut "disabled" : BUTTON, INPUT, OPTGROUP, OPTION, SELECT et TEXTAREA.

Cet attribut est hérité mais les déclarations locales remplacent la valeur valeur héritée.

La façon dont les éléments désactivés sont rendus dépend de l'agent utilisateur. Pour certains agents utilisateurs "grisent" les éléments de menu, les étiquettes de bouton, etc. étiquettes de boutons, etc.

Dans cet exemple, l'élément INPUT est désactivé. Par conséquent, il ne peut pas recevoir une entrée utilisateur et sa valeur ne sera pas non plus soumise avec le formulaire .

<INPUT disabled name="fred" value="stone">

Note. La seule façon de modifier dynamiquement la valeur de l'attribut disabled est de passer par un script.

100 votes

Solution : ajouter un <input type="hidden"> avec le même nom/valeur que l'entrée désactivée.

0 votes

Avez-vous des informations sur les navigateurs qui obéissent et ceux qui n'obéissent pas ?

98 votes

Utilisez plutôt readonly="readonly" :) voir stackoverflow.com/questions/7357256/

38voto

Novice_JS Points 546

Vous pouvez utiliser trois choses pour imiter les handicapés :

  1. HTML : readonly (afin que la valeur présente dans l'entrée puisse être utilisée lors de la soumission du formulaire. L'utilisateur ne peut pas non plus modifier la valeur de l'entrée).

  2. CSS : 'pointer-events':'none' (empêchant l'utilisateur de cliquer sur l'entrée)

  3. HTML : tabindex="-1" (bloquant l'utilisateur pour naviguer vers l'entrée du clavier)

24voto

MiffTheFox Points 10537

Ils ne sont pas soumis, parce que C'est ce qui est dit dans la spécification du W3C. .

17.13.2 Contrôles réussis

Un contrôle réussi est "valable" pour la soumission. [snip]

  • Les contrôles qui sont désactivés ne peuvent pas réussir.

En d'autres termes, la spécification indique que les contrôles qui sont désactivés sont considérés comme non valides et ne doivent pas être soumis.

8voto

Elyas Hadizadeh Points 538

Il existe deux attributs, à savoir readonly y disabled qui peut effectuer une saisie en semi-libre. Mais il y a une petite différence entre eux.

<input type="text" readonly />
<input type="text" disabled />
  • El readonly rend votre texte d'entrée désactivé, et les utilisateurs ne peuvent plus le modifier.
  • Non seulement le disabled font de votre texte d'entrée désactivé (immuable) mais aussi il ne peut pas être soumis .

Approche jQuery (1) :

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

Approche jQuery (2) :

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

Approche JavaScript :

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PS disabled y readonly sont des attributs html standard. prop introduit avec jQuery 1.6 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X