2011-06-23 18 views
6

Mi sitio tiene lo siguiente:¿Cómo puedo repetir todas mis casillas marcadas?

<td><input id="inp_0001010030" type="checkbox"></td> 
<td><input id="inp_0001010031" type="checkbox"></td> 
<td><input id="inp_0001010032" type="checkbox"></td> 
<td><input id="inp_0001010033" type="checkbox"></td> 
<td><input id="inp_0001010034" type="checkbox"></td> 

Estos son creados dinámicamente.

Y un formulario que está en la parte inferior de la página que está afuera del área con las filas anteriores:

<form action="??" method="??" > 
    <input value="Action" type="submit"> 
     <select id="SelectedAction" > 
     <option value="1">Delete</option> 
     <option value="2">Move</option> 
     </select> 
</form> 

Una vez creadas las filas Necesito tener el evento click en el botón de formulario ir a buscar en cada y llama a una función de javascript con la identificación y el valor de SelectedAnswer para cada casilla que encuentre marcada.

Tenga en cuenta que si hay una manera de hacer esto sin el formulario, entonces es aún mejor. Simplemente no sé lo suficiente sobre jQuery.

¿Es este el tipo de cosa que puedo hacer fácilmente con jQuery?

+2

posible duplicado de [? JQuery seleccione (cada uno) todas las casillas sin comprobar] (http://stackoverflow.com/questions/1083881/jquery-select-each-all-checked-checkboxes) –

+4

* No sé lo suficiente sobre jQuery *: es hora de obtener más información;) http://docs.jquery.com/Tutorials –

Respuesta

18
$("input[type=submit]").click(function() { 
    var answer = $("#SelectedAnswer").val(); 
    $("input:checked").each(function() { 
     var id = $(this).attr("id"); 
     alert("Do something for: " + id + ", " + answer); 
    }); 
}); 
+0

¿Qué tal si saco el botón del formulario? ¿Hay realmente alguna necesidad de que tenga un formulario allí? – JonAndMarie

+0

No.El formulario no tiene ningún propósito a menos que lo use para enviar datos al servidor. –

1

Tendrá que agregar una clase a sus casillas de verificación. Después de eso, utilizar el método de jQuery .each() así:

HTML

<input type="checkbox" class="list"> 
<input type="checkbox" class="list"> 
<input type="checkbox" class="list"> 
<input type="checkbox" class="list"> 
<input type="checkbox" class="list"> 

jQuery

$(document).ready(function() 
{ 
    $("form input[type='submit']").click(function(e) 
    { 
     e.preventDefault(); 

     // This gets the value of the currently selected option 
     var value = $(this).children(":selected").val(); 

     $(".list").each(function() 
     { 
      if($(this).is(':checked')) 
      { 
       $(this).fadeOut(); 
       // Do stuff with checked box 
      } 
      else 
      { 
       // Checkbox isn't checked 
      } 
     }) 
    }); 
}); 

EDITAR

favor ver este fiddle (código de seguridad) Solo he implementado la opción de eliminar (no muy bien), pero use la variable value para verificar qué opción se está seleccionando. Si desea que esto suceda antes de enviar el formulario, elimine la línea e.preventDefault().

+0

¿Hay alguna forma de que puede iniciar esta "comprobación" haciendo clic en mi botón de entrada que está en el formulario. ¿Todavía necesito un formulario ya que necesito obtener el valor de la lista de selección? – JonAndMarie

+0

Consulte mi edición, JSFiddle y código actualizado. – Bojangles

10
$('input[type=checkbox]:checked').each(function() { 
    // Do something interesting 
}); 
0

Definitivamente.

Lo primero que debe hacer es vincular un controlador de eventos a su evento de envío en el formulario utilizando el controlador $.submit(). Seguidamente se le quiere iterar sobre cada uno de los elementos de entrada controladas:

$('form').submit(function() { 
    var action = $('#SelectedAction option:selected', this).val(); 
    $('table input:checkbox:checked').each(function(i){ 
     return doMyCustomFunction(this, action); 
    }); 
} 

Su función personalizada ("doMyCustomFunction()" en mi ejemplo) debe devolver verdadero o falso dependiendo de si usted quiere enviar su formulario o no .

A modo de un ejemplo práctico, podría ser algo como esto:

function doMyCustomFunction(el, formAction) { 
    console.info('The element ID is ' + el.id + ' and the action is ' + formAction); 
    return true; 
} 
Cuestiones relacionadas