2011-06-22 19 views
27

Tengo una aplicación MVC3 usando Project Awesome (http://awesome.codeplex.com/), pero estoy obteniendo un comportamiento extraño en las casillas de verificación. Tengo el siguiente HTML simple dentro de una ventana emergente modal <input type="checkbox" class="check-box" name="IsDeleted">Entrada HTML Checkbox return 'Encendido' en lugar de 'Verdadero' al enviar el formulario

Cuando envío el formulario que contiene este elemento, su valor de publicación es 'on' en lugar del 'verdadero' esperado (cuando el elemento está marcado).

¿Alguien sabe por qué es esto? Supongo que puede haber algunos javascript en algún lugar jugando con los datos del formulario, pero quería comprobar si no me falta algo de HTML.

Gracias

+0

que tenía esto cuando yo estaba usando e.target.value, cuando debería ser la esperanza e.target.checked esto ayude a alguien. – fungusanthrax

Respuesta

45

conjunto de atributos value las casillas de verificación a true y obtendrá true en su valor posterior.

+6

Esto es cierto si y solo si el usuario marca la casilla. Si no se verifica nada se publica. Además, el mecanismo de enlace de MVC establecerá el valor en nulo si no se publica nada para esa casilla de verificación. – Mike

+1

ie: ...... función CBSelectedValueToTrue (cb) { if (cb.marcado) { cb.value = "true"; } } – BriOnH

4

Es específico del navegador, supongo, qué enviar cuando el valor no está definido. Debe definir el atributo value en sus radios/casillas de verificación para asegurarse de lo que se le devolverá. Sugeriría value="1"

0

Seguramente debería comprobar si está configurado: el valor que envía es irrelevante, si no está marcado, no se envía nada al realizar el POST.

+0

¿Está eso especificado en W3C? Pensé que esto era dependiente del navegador. – sferencik

-4

Use jQuery para la decisión entre navegadores. Y devolverá verdadero o falso de todos modos.

$('#check-box-id').attr('checked') == true 

si su casilla de verificación tiene un id casilla-id. Para su versión actual uso la siguiente (seleccione el nombre de la clase):

$('.check-box').attr('checked') == true 
1

conjunto data-val="true" and value="true" por deafult ... si casilla de verificación está activada, devuelve verdadero

-4

Uso jQuery

var out=$('.check-box').is('checked') 

Si checkbox está marcado = verdadero else out = falso

-1

En HTML, a dd un input type = "hidden" por encima de casilla:

<input name="active" id="activeVal" type="hidden"> 
<input id="active" type="checkbox"> 

A continuación, añadir una secuencia de comandos de la siguiente manera:

$('#activeVal').val($('#active').is(':checked')); 
$('#active').change(function() { 
    $('#activeVal').val($('#active').is(':checked')); 
}); 

Cuando lo haga, por ejemplo. $('#your-form').serialize() en jQuery, obtendrá el valor de la casilla de verificación en caso de control active: true o desactive active: false

Cuestiones relacionadas