64 votes

Modifier/obtenir l'état de vérification d'une case à cocher

Je veux simplement obtenir/modifier la valeur d'une case à cocher avec JavaScript. Non pas que je ne puisse pas utiliser jQuery pour cela. J'ai essayé quelque chose comme ça mais ça ne marche pas.

Fonction JavaScript

    function checkAddress()
    {
        if (checkAddress.checked == true)
        {
            alert("a");
        }
    }

HTML

<input type="checkbox" name="checkAddress" onchange="checkAddress()" />

97voto

Tim Down Points 124501

Utilisation de onclick à la place fonctionnera. En théorie, il se peut que les modifications apportées par le clavier ne soient pas prises en compte, mais tous les navigateurs semblent déclencher l'événement de toute façon lors de la vérification par le clavier.

Vous devez également passer la case à cocher dans la fonction :

function checkAddress(checkbox)
{
    if (checkbox.checked)
    {
        alert("a");
    }
}

HTML

<input type="checkbox" name="checkAddress" onclick="checkAddress(this)" />

2 votes

Je ne pense pas que son problème soit le type d'événement : comme vous l'avez mentionné, onchange est plus inclusif que onclick de toute façon. Le problème est qu'il n'y a pas d'objet appelé checkAddress avec un checked propriété. Très probablement, checkAddress va être résolu comme la fonction elle-même, puisqu'il est également nommé ainsi. Le fait de donner un attribut de nom à quelque chose en HTML ne crée pas une variable nommée ainsi en Javascript. Le passage de "this" ou de l'une des options proposées dans les réponses ci-dessous devrait faire l'affaire.

0 votes

@bmearns : Je pense que je n'ai pas repéré la variable vraisemblablement non déclarée (qui entre en conflit avec le nom de la fonction) dans ma hâte indécente d'être le premier, donc je concède que vous avez probablement raison. Surpris que cela ait été accepté.

2 votes

Pour ceux qui utilisent un framework comme React qui lie le contexte de l'application à "this" dans le callback, vous devriez utiliser checkbox.target.checked au lieu de checkbox.checked

22voto

Kevin Points 3580

Vous devez récupérer la case à cocher avant de l'utiliser.

Donnez à la case à cocher un id pour le récupérer avec document.getElementById(..) puis vérifier son état actuel.

Par exemple :

function checkAddress()
{
    var chkBox = document.getElementById('checkAddress');
    if (chkBox.checked)
    {
        // ..
    }
}

Et votre HTML ressemblerait alors à ceci :

<input type="checkbox" id="checkAddress" name="checkAddress" onclick="checkAddress()"/>

(On a également modifié le onchange a onclick . Ne fonctionne pas très bien dans IE :).

9voto

Pedro Sousa Points 91

Je sais que c'est une réponse très tardive, mais ce code est un peu plus souple et devrait aider les retardataires comme moi.

function copycheck(from,to) {
//retrives variables "from" (original checkbox/element) and "to" (target checkbox) you declare when you call the function on the HTML.

    if(document.getElementById(from).checked==true) 
    //checks status of "from" element. change to whatever validation you prefer.
        {
            document.getElementById(to).checked=true;
             //if validation returns true, checks target checkbox
        }
    else
        {   
            document.getElementById(to).checked=false; 
             //if validation returns true, unchecks target checkbox
        }
}

HTML étant quelque chose comme

<input type="radio" name="bob" onclick="copycheck('from','to');" />

où "de" et "à" sont les identifiants respectifs des éléments "de" que vous souhaitez copier "à". En l'état, cela fonctionnerait entre les cases à cocher, mais vous pouvez entrer n'importe quel ID et n'importe quelle condition tant que "à" (la case à cocher à manipuler) est correctement défini lors de l'envoi des variables de l'appel d'événement html.

Remarquez, comme SpYk3HH l'a dit, la cible que vous voulez utiliser est un tableau par défaut. L'utilisation de l'outil "afficher les informations sur l'élément" de la barre d'outils du développeur Web vous aidera à trouver l'identifiant complet des cases à cocher respectives.

J'espère que cela vous aidera.

4voto

Aarón Points 41

Tu as besoin de ça :

window.onload = function(){
    var elCheckBox=document.getElementById("cbxTodos");
    elCheckBox.onchange =function (){
        alert("como ves");
    }
};

3voto

Shadow Wizard Points 38568

Il faut qu'il le soit :

if (document.forms[0].elements["checkAddress"].checked == true)

En supposant que vous n'ayez qu'un seul formulaire, sinon utilisez le nom du formulaire.

À titre d'information, n'appelez pas l'élément et la fonction par le même nom, cela peut provoquer des conflits bizarres.

Prograide.com

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.

Powered by:

X