Premièrement: J'aime vraiment la réponse de CMS. Beaucoup plus simple. Mais dans le cas où ce n'est pas la meilleure option ...
Pourquoi ne pas simplement avoir une fonction JQuery liée à l'événement onsubmit
du formulaire qui traverse le formulaire et saisit l'entrée pour tous les <input>
s dans le formulaire et les active et puis soumet le formulaire? Avez-vous besoin de savoir si l'entrée est désactivée? Êtes-vous préoccupé par le fait que l'activation de l'entrée changera l'apparence visuelle d'une manière qui concerne l'utilisateur?
Dans les deux cas, vous pouvez ajouter quelque chose aux éléments que vous activez. Pour le style, ajoutez une classe qui donne aux entrées désactivées le même aspect que les entrées activées. Si vous avez besoin de savoir lesquels ont été désactivés, ajoutez quelque chose au nom ou à la valeur elle-même pour indiquer le statut. Par curiosité, quand voudriez-vous jamais l'info pour les personnes handicapées? Si l'entrée est toujours désactivée (ce qui signifie que l'utilisateur ne l'a pas défini), ne connaissez-vous pas déjà la valeur? Et si l'entrée est désactivée par l'utilisateur, ne vous trompez-vous pas en collectant ces données? Si la valeur est désactivée parce que c'est quelque chose comme un champ "total" qui se met à jour via js basé sur d'autres champs non-désactivés, j'irais avec CMS en le rendant en lecture seule à la place.
En fonction de votre réponse à la CMS:
Je ne peux imaginer quelques scénarios où une boîte de sélection sera désactivée, mais vous voudriez que passer au script. La principale qui me vient à l'esprit est que certaines cases de sélection sont activées lorsque d'autres options sont cochées, mais vous préférez que le formulaire renvoie la valeur par défaut de la zone de sélection plutôt que de laisser le script server remplir les blancs.
Si c'est le cas, pourquoi ne pas configurer une bascule entre une entrée cachée et la boîte de sélection? Avoir la même valeur et le même nom pour les deux entrées mais si l'une est activée, l'autre est désactivée. De cette façon, le script ne voit que l'une des deux entrées, et comme ils ont le même nom, il ne se fait pas attraper d'où proviennent les données.
$('form').submit(function() {
$('[disabled]').each(function(i) {
d_name = $(this).attr("name");
d_val = $(this).val();
$(this).after(
'<input type="hidden" name="' + d_name + '" value="' + d_val + ' />'
);
});
return true;
});
Juste au cas où vous pensez que je suis trop conceptuelle, voici une fonction simple qui fonctionnera sur Soumttre. Notez comment il traverse chaque élément désactivé et ajoute une nouvelle entrée cachée dans le DOM qui a le même nom et la valeur a votre entrée cachée, assurant ainsi que votre script côté serveur peut traiter toutes les entrées génériquement.
Expliquer la série d'événements que vous souhaitez que l'utilisateur l'expérience , alors nous pouvons vous aider à trouver une solution. Il doit y avoir quelque chose d'autre à l'histoire, sinon il n'y a aucune raison d'utiliser une boîte de sélection si elle va juste être désactivée. –
Voici une raison pour laquelle nous voulions cette fonctionnalité (dans un projet différent sans rapport avec OP). Nous avons un site Web AJAXed qui charge dynamiquement les options disponibles. Dans certains cas où différentes options ne peuvent pas être sélectionnées, nous en sélectionnons une et désactivons le contrôle. Cela doit être renvoyé au serveur car nous avons besoin du paramètre. (Oui, théoriquement, nous pourrions comprendre quelle serait la valeur sur le backend, mais puisque la logique a déjà été faite, il n'y a pas besoin de compliquer les choses.) –
Eh bien, je suppose que c'est une conversation morte, mais quelqu'un l'a dépréciée , donc je l'ai upvoted. –