2011-07-06 31 views
26

Hy!casilla de verificación siempre está "on"

Cuando Uploadify enviar el archivo a la acción, necesito saber si el checbox está marcada o no, así que lo hice:

$('#uploaded').uploadify({ 
     'uploader': '/uploadify.swf', 
     'cancelImg': '/cancel.png', 
     'script': '/Interaction/Upload', 
     'multi': true, 
     'auto': false, 
     'method': 'post', 
     'scriptData': {'Checkbox': $('#checkbox').val()}, 
    }); 

Pero escapadas Puedo obtener un valor "on". No importa si está marcado o no.

¿Alguien puede ayudar? Tks.


ACTUALIZACIÓN:

me di cuenta que uploadify es conseguir la casilla de verificación cuando la página es loaded.This significa que si cambio de la casilla de verificación (o cualquier otro tipo de entrada) del uploadify obtendrá el valor inicial, en este caso, "casilla de verificación = falso".

¿Cómo puedo enviar un formulario con uploadify?

Tks.

Respuesta

7

Cambio:

$('#checkbox').val() 

a

$('#checkbox').attr('checked') 
+1

Estoy consiguiendo "falsa". No sé por qué. – Thiago

44

tratar $('#checkbox').is(':checked')

+4

Me estoy poniendo siempre "falso" al usar esto para. – Thiago

+0

Funciona todo el tiempo para mí. – kd7iwp

+0

Gracias hombre! Esto también funciona para bootstrap icheckbox. –

0

Uso:

$('#checkbox').attr('checked') 
9

probar este

$('#checkbox').is(':checked') 
+0

Me gusta cómo este método te da un booleano. – kd7iwp

+1

Este es el único método que funciona en mi caso. ¡Gracias! – gumkins

-1

Usted puede dar

si (jQuery (este) .attr ('marcado')) {// u tiene que utilizar este selector de acuerdo a su función puede ser .pulsa .live o de lo contrario. .

Gracias

0

sólo tenía el mismo problema y encontré esta solución: valor

if($("input[name='yourcheckbox']").is(':checked')) { 
    console.log('chb checked'); 
} else { 
    console.log('chb not checked'); 
} 
17

Una de casilla es siempre 'on'. El formulario HTML envía el valor al servidor solo si la casilla de verificación está marcada. Si la casilla no está marcada, entonces el parámetro de solicitud estará ausente. Esta semántica aparentemente minimiza las diferencias entre casillas de verificación y botones de opción.

el formulario HTML implementa la semántica siguiente:

if ($('#mycheckbox').is(':checked')) { 
    payload['mycheckbox'] = $('#mycheckbox').val(); 
} 

Usted puede imitar esta semántica en Ajax o enviar la bandera 'marcado' directamente de la siguiente manera:

payload['mycheckbox'] = $('#mycheckbox').is(':checked'); 

lo recomiendo mímica la semántica del formulario HTML. Independientemente de lo que hace el cliente, te recomiendo lo siguiente en el código del servidor:

if mycheckbox param exists and its value is either 'true' or 'on' { // pseudo code of course 
    // mycheckbox is checked 
} else { 
    // mycheckbox is unchecked 
} 

Esperanza ayuda a esta explicación.

+0

La semántica es muy confusa ... ¡Espero que haya hecho la vida de alguien más fácil! Incluso una casilla de verificación desactivada tiene un valor de "on" ... –

+0

Implementación muy confusa, pero esta respuesta me ayudó a entender por qué val() siempre vuelve a 'on' para casillas de verificación. –

12

Hay una manera muy práctica de verificar todas estas propiedades de elemento como disabled, checked, etc. con la función prop. Esto también lo convierte a booleano:

$('#checkbox').prop('checked'); // -> true/false 
$('#checkbox').prop('disabled'); // -> true/false 
+0

Vamos a votar esto arriba :) – TheRealChx101

+0

wtf @ chx101! ¿que quieres de mi? : P: D –

+0

Vanilla JS: var isChecked = elDom.checked // _> true/false – l0rin

Cuestiones relacionadas