2009-09-02 25 views
10

Tengo un problema, tengo X <input type="checkbox" /> en mi código, ahora quiero alejar este objeto/matriz. - mira mi código.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; 
    } 
} 

Cuando la saca en alerta i obtener un objeto, pero si tengo casilla de selección 2 I cuál es el valor de este 2 casillas de verificación.

espero poder ser útil y todos aquí :) me entienden

+3

@NeoNmaN: Hay correctores ortográficos útiles disponibles para casi todos los navegadores. No me malinterprete, pero creo que debería instalar uno. Esta pregunta es realmente difícil de entender. – Tomalak

+0

Tienes que aclarar tu pregunta. ¿Desea obtener el valor de todas las casillas marcadas? ¿Y qué quieres hacer con eso? Cuando solo envíe el formulario, como mencionó en el comentario al lado de la alerta, todos los valores de la casilla de verificación se enviarán al servidor. –

Respuesta

25

¿Qué tal

$("#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

Para que funcione para matrices de cadenas, he cambiado la línea: test + = val.value + ","; para probar + = val + ","; –

0

Cuando te tengo bien, desea que el usuario seleccionar una casilla de verificación (o se trata de uno o más?). Esto debe hacerlo:

$("#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: Después de leer su pregunta de nuevo, me di cuenta de que el código anterior no soluciona su problema. Sin embargo, lo anterior funciona y es una versión mucho más corta de su solución. Quizás quieras usarlo en su lugar. Para responder a su pregunta, usted podría alertar al valor de todas las casillas marcadas como esto:

cambiar esta situación:

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

a esto:

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

    alert(values); 
+0

no, no es trabajo,:/solo devuelve el primer valor. – ParisNakitaKejser

+0

@NeoNmaN: Sí, primero me equivoqué con tu pregunta. Acabo de agregar un ejemplo para obtener todos los valores en la alerta. –

3

No estoy exactamente seguro de lo que' Estoy buscando, pero supongo que el jQuery.each() method ayudará. Puede usarlo para iterar sobre matrices, objetos y más.

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

¿qué tal algo como esto:

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

    }); 
+0

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

+0

mabye debe cambiar el nombre marcado a otro nombre – william

2

puede ser que - en última instancia - que busca $.serializeArray() o $.serialize()?

Si no es así, entonces tal vez esto es lo ayuda a:

$("#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 
    } 
});