Tengo una función que se llama mediante un enlace que debe marcar varias casillas de verificación que existen dentro de un div específico (pasado a la función). Funciona en todos los navegadores excepto IE (7.) Hasta donde puedo decir .attr ('marcado', 'marcado' es la forma correcta de hacer esto usando jquery 1.5.1
function selectall(industry){
$("#"+industry+"Apps :checkbox").attr('checked', 'checked');
$("#"+industry+"Apps :checkbox").change(); /* used for jqtransform plugin */
}
¿Hay algo que me falta o una mejor manera de hacer esto que funcione en todos los navegadores? Realmente no me importa anular la selección, solo seleccionar.
HTML se parece a
<div id = 'HealthcareApps'>
<div style="clear: both;">
<a href = "javascript:selectall('Healthcare');">Select all</a>
</div>
<ul>
<li><label for="id_Healthcare_0"><input type="checkbox" name="Healthcare" value="1" id="id_Healthcare_0" /> Simple Messaging</label></li>
<li><label for="id_Healthcare_1"><input type="checkbox" name="Healthcare" value="2" id="id_Healthcare_1" /> Mobile Alerts and Alarms</label></li>
<li><label for="id_Healthcare_2"><input type="checkbox" name="Healthcare" value="3" id="id_Healthcare_2" /> Patient Identification / Drug Conflicts</label></li>
</ul>
(sí, sé que los estilos en línea son una idea horrible. Lo arreglaré también si alguna vez puedo hacer que este enlace funcione en IE).
5 respuestas
Puede intentar algo como esto: js fiddle demo
<div id = 'HealthcareApps'>
<div style="clear: both;">
<a href="#" id="selectall" class="Healthcare" >Select all</a>
</div>
<ul>
<li><label for="id_Healthcare_0"><input type="checkbox" name="Healthcare" value="1" id="id_Healthcare_0" /> Simple Messaging</label></li>
<li><label for="id_Healthcare_1"><input type="checkbox" name="Healthcare" value="2" id="id_Healthcare_1" /> Mobile Alerts and Alarms</label></li>
<li><label for="id_Healthcare_2"><input type="checkbox" name="Healthcare" value="3" id="id_Healthcare_2" /> Patient Identification / Drug Conflicts</label></li>
</ul>
</div>
Jquery:
$('#selectall').click(function(e) {
e.preventDefault();
var industry = $(this).attr("class");
$("#" + industry + "Apps :checkbox").attr('checked', 'checked');
});
Y, para activar y desactivar:
$('#selectall').click(function(e) {
e.preventDefault();
var industry = $(this).attr("class");
var checkbox = $("#" + industry + "Apps :checkbox");
checkbox.attr('checked', !checkbox.attr('checked'));
});
Intente usar click () en lugar de change (). Esto parece ser un error de IE7:
Problemas de IE7 con mi jQuery [haga clic y cambie las funciones]
En su marcado, el div 'HealthcareApps' no tiene una etiqueta de cierre. Quizás esta es una omisión de copiar / pegar, pero si no lo es, entonces el marcado inválido podría ser la razón, especialmente porque es IE7 el que se queja.
Tratar $ ("#" + industria + "Entrada de aplicaciones: casilla de verificación"). attr ('marcado', 'marcado');
No tengo tiempo para verificar esto (en el trabajo :)) pero tengo una sospecha furtiva que ayudará, es decir, a resolverlo
Prueba esto
function selectall(industry){
$("#"+industry+"Apps :checkbox").attr('checked', true);
$("#"+industry+"Apps :checkbox").change(); /* used for jqtransform plugin */
}
Si usa jQuery 1.6+, puede usar prop
$("#"+industry+"Apps :checkbox").prop('checked', true);
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.