web-dev-qa-db-fra.com

Le formulaire de soumission soumet la valeur à "on" plutôt qu'à "true"

Salut J'ai un formulaire html que je soumets via l'événement click sur un bouton. L'événement déclenche $ ("# myform"). Submit (); le problème est qu'il y a une case à cocher sur le formulaire et dans firebug sous les paramètres postés, il affiche "mycheckbox1 on" plutôt que le "mycheckbox1 true" attendu.

lors de la soumission d'un formulaire via ajax, je peux définir les données qui sont publiées sans problème, mais ce formulaire a un téléchargement de fichier qui nécessite l'un des différents hacks pour le faire fonctionner. Celui que j'utilise finalement appelle. mais ce n'est peut-être pas pertinent.

Dans tous les cas, lorsque les données arrivent sur le serveur, le serveur ne voit pas la valeur "on" comme un booléen et l'ignore donc.

Toute idée serait grandement apprécié.

27
Raif

Une case cochée envoie simplement son attribut value. Une case à cocher non cochée ne s'envoie pas dans le formulaire.

Par conséquent, un simple test si l'attribut name de la case à cocher a été publié peut déterminer s'il a été vérifié ou non.

21
alex

Oui, différents navigateurs peuvent gérer les cases à cocher différemment lorsque la valeur n'est pas définie.

Vous pouvez définir l'attribut value de la case à cocher explicitement sur "true" tel que votre serveur le comprend lorsque la case est cochée et qu'il lui est envoyé. Comme Alex l'a laissé entendre dans sa réponse, la case à cocher ne sera pas envoyée si elle n'est pas cochée, donc, je suppose que le serveur sera par défaut faux dans ce cas.

6
Meligy

Essayez de sélectionner ou d'envoyer la valeur checked avec le formulaire:

$("input:checked").val()

http://jsfiddle.net/YxZRS/

1
jk.