2010-05-05 9 views
4

Quelqu'un at-il un pas de JavaScript façon de rendre la case à cocher HTML toujours soumettre une valeur? Comme dans le cas où vous le contrôlez, la soumission du formulaire inclura une valeur A mais si elle n'est pas cochée, elle contient toujours une valeur B? Bien que je me dise qu'il n'y a aucun moyen, je travaille sur un site qui doit encore fonctionner quand JS est éteint, et ce serait idéal.Case à cocher "off" sans JavaScript

+3

Nous sommes dans l'ère de HTML5, IPad, Android, et vous essayez toujours de soutenir le navigateur sans JavaScript? C'est un blasphème. –

+1

J'essaie de ne pas filtrer les clients potentiels en fonction des paramètres du navigateur: P (essayez) –

+0

Je cherche une réponse à cette question exacte, mais je crains que ce soit NON - comme indiqué dans les réponses. Bien que vous pouvez le faire avec javascript qui se sent un peu «hacky». Donc mon intérêt à ne pas utiliser javascript serait parce que ce n'est pas joli, pas pour supporter les navigateurs sans javascript. Cette question me semble donc tout à fait valable dans l'ère actuelle. – kasimir

Répondre

7

Les cases à cocher HTML ne sont pas supposées fonctionner de cette manière. Si vous cochez la case, la paire définie par le paramètre name = value sera envoyée. Si vous le décochez, il ne sera pas envoyé. Du côté serveur, il suffit de vérifier la présence du nom du paramètre (ou de la valeur dans le cas de plusieurs cases dans un groupe nommé) dans la carte des paramètres et de gérer en conséquence. Si présent, alors c'est vérifié. Si elle est absente, elle n'est pas vérifiée. Aussi simple que cela. Vous connaissez déjà la "valeur non cochée" du côté serveur.

+0

bonne explication. –

4

Vous pouvez peut le faire en ayant un élément de formulaire caché avec le même name. Cependant, différents navigateurs peuvent traiter différemment la priorité dont ils sont soumis (si la case est cochée), donc au mieux, c'est une solution hacky.

+0

C'est un très bon revirement, mais la priorité peut être un problème important. –

0

La façon dont j'ai travaillé l'un de ces problèmes était de définir un élément de formulaire caché qui comprenait toute la case names délimitée par une virgule. Ensuite, du côté serveur, j'ai simplement fait exploser cette chaîne et vérifié pour voir quelles cases étaient activées ou désactivées. Cela ressemblait quand même à un hack, mais je ne connaissais pas JavaScripts à ce moment-là, alors c'est ce que j'ai fini par faire. Envisager de réviser ceci en ce moment.

J'espère que cela aidera quelqu'un.