javascript - colgroup - Bucle sobre la tabla html y verifique las casillas de verificación(JQuery)
table html (3)
El siguiente fragmento de código habilita / deshabilita un botón dependiendo de si se ha marcado al menos una casilla de verificación en la página.
$(''input[type=checkbox]'').change(function () {
$(''#test > tbody tr'').each(function () {
if ($(''input[type=checkbox]'').is('':checked'')) {
$(''#btnexcellSelect'').removeAttr(''disabled'');
} else {
$(''#btnexcellSelect'').attr(''disabled'', ''disabled'');
}
if ($(this).is('':checked'')){
console.log( $(this).attr(''id''));
}else{
console.log($(this).attr(''id''));
}
});
});
Aquí está la demo en JSFiddle .
Tengo una tabla HTML con una casilla de verificación en cada fila.
Quiero pasar por encima de la tabla y ver si hay alguna casilla de verificación que esté marcada.
Lo siguiente no funciona:
$("#save").click( function() {
$(''#mytable tr'').each(function (i, row) {
var $actualrow = $(row);
checkbox = $actualrow.find(''input:checked'');
console.log($checkbox);
});
Esto imprime en la consola lo siguiente:
[prevObject: jQuery.fn.jQuery.init[1], context: tr, selector: "input:checked", constructor: function, init: function…]
por fila independientemente de si se marca alguna casilla de verificación.
Actualizar
Mismo problema con:
$(''#mytable tr'').each(function (i, row) {
var $actualrow = $(row);
$checkbox = $actualrow.find('':checkbox:checked'');
console.log($checkbox);
});
Use esto en su lugar:
$(''#save'').click(function () {
$(''#mytable'').find(''input[type="checkbox"]:checked'') //...
});
Permítame explicarle lo que hace el selector: input[type="checkbox"]
significa que esto coincidirá con cada <input />
con el tipo de atributo type
igual a checkbox
de checkbox
Después de eso :checked
coincidirá con todas las casillas de verificación marcadas.
Puede pasar por encima de estas casillas de verificación con:
$(''#save'').click(function () {
$(''#mytable'').find(''input[type="checkbox"]:checked'').each(function () {
//this is the current checkbox
});
});
Aquí está la demo en JSFiddle .
Y aquí hay una demostración que resuelve exactamente su problema http://jsfiddle.net/DuE8K/1/ .
$(''#save'').click(function () {
$(''#mytable'').find(''tr'').each(function () {
var row = $(this);
if (row.find(''input[type="checkbox"]'').is('':checked'') &&
row.find(''textarea'').val().length <= 0) {
alert(''You must fill the text area!'');
}
});
});
use .filter('':has(:checkbox:checked)''
es decir:
$(''#mytable tr'').filter('':has(:checkbox:checked)'').each(function() {
$(''#out'').append(this.id);
});