2009-09-02 4 views
10

J'ai un problème, j'ai X <input type="checkbox" /> dans mon code, maintenant je veux foreach cet objet/tableau sa sortie. - Regarde mon code.foreach object/array en jQuery

$("#denied_seekrs").click(function() 
{ 
    if (!isCheckedById("selectname")) 
    { 
     alert ("Please select at least one event"); 
     return false; 
    } 
    else 
    { 
     alert($("input[@id=selectname]:checked").val()); //submit the form 
    } 
}); 

function isCheckedById(id) 
{ 
    var checked = $("input[@id="+id+"]:checked").length; 
    if (checked == 0) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

Quand je sortie en alerte-je obtenir un objet, mais si je dois sélectionnez 2 case I ce que la valeur de cette 2 cases.

J'espère que je peux être utile et tout ici me comprendre :)

+3

@NeoNmaN: Il y a des vérificateurs orthographiques utiles disponibles pour presque tous les navigateurs. Ne vous méprenez pas, mais je pense que vous devriez en installer un. Cette question est vraiment difficile à comprendre. – Tomalak

+0

Vous devez clarifier votre question. Vous voulez obtenir la valeur de toutes les cases cochées? Et que veux-tu faire avec? Lorsque vous soumettez simplement le formulaire, comme vous le mentionnez dans le commentaire à côté de l'alerte, toutes les valeurs de checkbox seront envoyées au serveur. –

Répondre

25

Que diriez-vous

$("#denied_seekrs").click(function() { 
    var checkedInputs = $("input:checked"); 
    var test = ""; 
    $.each(checkedInputs, function(i, val) { 
     test += val.value+","; 
    }); 
    test = test.substring(0,(test.length-1)); 
    alert(test); 
}); 
+1

Pour le faire fonctionner pour les tableaux de chaînes, j'ai changé la ligne: test + = val.value + ","; tester + = val + ","; –

0

Quand je vous ai droit, vous voulez que l'utilisateur de sélectionner une case à cocher (ou est-ce un ou plusieurs?). Cela devrait le faire:

$("#denied_seekrs").click(function() 
{ 

    var $checkedInputs = $("input:checked"); 

    if ($checkedInputs.length != 1) 
    { 
     alert ("Please select one event"); 
     return false; 
    } 

    alert($checkedInputs.val()); //submit the form 
}); 

EDIT: Après avoir lu votre question, je me suis aperçu que le code ci-dessus ne répond pas à votre question. Cependant, ce qui précède fonctionne et est une version beaucoup plus courte de votre solution. Peut-être que vous voulez l'utiliser à la place. Pour répondre à votre question, vous pouvez alerter la valeur de toutes les cases cochées comme ceci:

Modifier ceci:

alert($checkedInputs.val()); //submit the form 

à ceci:

var values = ""; 
    $checkedInputs.each(function(){ 
     values += $(this).val() + " "; 
    }); 

    alert(values); 
+0

non son travail,:/son seulement retourner la première valeur. – ParisNakitaKejser

+0

@NeoNmaN: Oui, j'ai d'abord eu une mauvaise réponse à votre question. Je viens d'ajouter un exemple pour obtenir toutes les valeurs dans l'alerte. –

3

Je ne suis pas exactement ce que vous » re recherche, mais je devine que le jQuery.each() method aidera. Vous pouvez l'utiliser pour parcourir des tableaux, des objets et plus encore.

var arr = [ "one", "two", "three", "four", "five" ]; 

jQuery.each(arr, function() { 
    $("#" + this).text("My id is " + this + "."); 
    return (this != "four"); // will stop running to skip "five" 
}); 
2

que diriez-vous quelque chose comme ceci:

jQuery.each(checked, function() { 
     $(checked + this).text("My id is " + this + "."); 

    }); 
+0

http://docs.jquery.com/Utilities/jQuery.each – william

+0

mabye vous devriez renommer coché à un autre nom – william

2

peut-il que - finalement - vous cherchez $.serializeArray() ou $.serialize()?

Sinon, alors peut-être cela est vous aide:

$("#denied_seekrs").click(function() 
{ 
    if (!isCheckedById("selectname")) 
    { 
     alert ("Please select at least one event"); 
     return false; 
    } 
    else 
    { 
     // prepare array of values 
     var values = []; 

     // prepare list of checked checkboxes 
     var $checkboxes = $("input[@id=selectname]:checked"); 

     // push each individual value into the array 
     $checkboxes.each(function() { values.push($(this).val()); }); 

     // debug output 
     alert(values.join("\n")); 
     //submit the form 
    } 
});