web-dev-qa-db-fra.com

Les champs de formulaire désactivés ne soumettant pas de données

Existe-t-il un moyen (avec un indicateur d'attribut ou quelque chose du genre) d'activer les champs de formulaire désactivés pour soumettre des données?

Ou, si cela n'est pas possible, y a-t-il un moyen d'empêcher l'édition de champs avec css ou tout autre attribut que désactivé sans les masquer?

Mon cas particulier pour le moment est un identifiant pour un ensemble de données qui devrait apparaître sous la forme (non modifiable) - s'il n'y a pas de meilleure solution, je pense que j'utiliserai un champ caché en plus du champ désactivé pour contenir le contenu réel. valeur avec le handicapé le montrant.

134
bardiir
213
Steve Robillard

Les éléments avec l'attribut Disabled ne sont pas soumis ou vous pouvez dire que leurs valeurs ne sont pas publiées.

c'est à dire.

<input type="textbox" name="Percentage" value="100" disabled="disabled" /> 

Pour votre information,

  1. Les contrôles désactivés ne reçoivent pas le focus.
  2. Les contrôles désactivés sont ignorés dans la navigation par tabulation.
  3. Les contrôles désactivés ne peuvent pas être publiés avec succès.

Vous pouvez utiliser l'attribut readonly dans votre cas, ce qui vous permettra de publier les données de votre champ.

c'est à dire.

<input type="textbox" name="Percentage" value="100" readonly="readonly" />

Pour votre information,

  1. Les éléments en lecture seule reçoivent le focus mais ne peuvent pas être modifiés par l'utilisateur.
  2. Les éléments en lecture seule sont inclus dans la navigation par tabulation.
  3. Les éléments en lecture seule sont publiés avec succès.

Remarque: READONLY ne fonctionne pas avec les cases à cocher et les balises de sélection

Réf de

57
Aditya P Bhatt

Comme il a déjà été mentionné: READONLY ne fonctionne pas pour <input type='checkbox'> et <select>...</select>.

Si vous avez un Form avec des cases à cocher/sélections désactivées ET si vous avez besoin de les soumettre, vous pouvez utiliser jQuery:

$('form').submit(function(e) {
    $(':disabled').each(function(e) {
        $(this).removeAttr('disabled');
    })
});

Ce code supprime l'attribut disabled de tous les éléments lors de l'envoi.

11
Mario Werner

Utilisez les événements de pointeur CSS: aucun sur les champs que vous souhaitez "désactiver" (éventuellement avec un arrière-plan grisé) qui permet l'action POST, comme:

<input type="text" class="disable">

.disable{
pointer-events:none;
background:grey;
}

Réf.: https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events

5
Tom

Nous pouvons également utiliser le readonly uniquement avec les attributs ci-dessous -

en lecture seule onclick = 'return false;'

En effet, si nous n'utilisons que le mode lecture seule, les boutons radio seront modifiables. Pour éviter cette situation, nous pouvons utiliser en lecture seule la combinaison ci-dessus. Cela limitera l'édition et les valeurs de l'élément seront également transmises lors de la soumission du formulaire.

0
Kripa Yadav

ajoutez CSS ou la classe à l'élément d'entrée qui fonctionne dans les balises select et text comme

style = "pointer-events: none; background-color: # E9ECEF"

0
Paresh