Imaginez que vous avez un formulaire où vous faites basculer la visibilité de plusieurs champs. Et si le champ n'est pas affiché, vous ne voulez pas que sa valeur soit dans la requête.
Comment gérez-vous cette situation?
Imaginez que vous avez un formulaire où vous faites basculer la visibilité de plusieurs champs. Et si le champ n'est pas affiché, vous ne voulez pas que sa valeur soit dans la requête.
Comment gérez-vous cette situation?
Le fait de définir un élément de formulaire sur disabled empêchera qu'il soit envoyé vers le serveur, par exemple :
En JavaScript, cela voudrait dire quelque chose comme ceci :
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].style.display == 'none') {
inputs[i].disabled = true;
}
}
document.forms[0].submit();
En jQuery :
$('form > input:hidden').attr("disabled",true);
$('form').submit();
Avec le sélecteur pseudo jQuery :input
au lieu de input
, vous pouvez également facilement désactiver tous les éléments select
et textarea
Dans jQuery >= 1.6, au lieu de attr("disabled", true)
vous devriez utiliser prop("disabled", true)
api.jquery.com/prop
@dominicbri7 - À partir de jQuery 1.6, il est recommandé d'utiliser .prop()
au lieu de .attr()
pour obtenir ET définir à la fois les propriétés disabled et checked. Vérifier et/ou définir en utilisant .attr()
pourrait dans certains cas donner des résultats indésirables. Veuillez lire la documentation jQuery avant de commenter sur ce à quoi yorch faisait référence.
Vous pourriez utiliser JavaScript pour définir l'attribut désactivé. L'événement de clic sur le bouton 'submit' est probablement le meilleur endroit pour le faire.
Cependant, je vous conseillerais de ne pas le faire du tout. Si possible, vous devriez filtrer votre requête sur le serveur. Cela sera plus fiable.
Si vous souhaitez désactiver tous les éléments ou certains éléments à l'intérieur d'un élément parent masqué, vous pouvez utiliser
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
Cet exemple http://jsfiddle.net/gKsTS/ désactive tous les champs de texte à l'intérieur d'une div cachée
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.