2010-08-19 11 views
5

Tengo un grupo de cuadros de texto que han requerido la validación de campo conectada a ellos. Obviamente, todos comparten el mismo nombre de grupo de validación. Tengo una casilla de verificación para los términos del servicio que deben verificarse antes de hacer clic en el botón Enviar realmente hace cualquier cosa.Obligar a un grupo de validación a fallar si no se cumple una condición

¿Hay algún código C# que diga que si esta casilla no está marcada, falla el grupo de validación?

¿O hay una manera mejor?

editar: Agregué un validador personalizado y lo usé en mi código. No funciona.

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    args.IsValid = false; 
    if (cbxTerms.Checked) 
     args.IsValid = true; 
} 
+5

¿Por qué no le da a CheckBox un CustomValidator y lo agrega al mismo Grupo de Validación? – SteveCav

+0

¿Has probado con el validador personalizado? – Raymund

+0

por favor vea mi edición anterior, vi esta solución en su tubo pero no funciona para mí. No puedo entender por qué. –

Respuesta

0

Descubrí cómo hacerlo. Hice un cuadro de texto, le asigné un validador de campo req. Ponga el cuadro de texto 99999px fuera de la pantalla. En mi C# dije si la casilla de verificación está marcada, textbox.text = ""; en la casilla de verificación, verifique el evento cambiado que dije si la casilla de verificación está marcada, entonces el cuadro de texto = "1"; Mucho más fácil que cualquier otra solución que pude encontrar

Editar: Es mejor usar un campo oculto.

+0

No olvide aprobar su propia respuesta como correcta – abatishchev

0

Si tuviera que hacer esto, solo usaría JavaScript. Cuando se carga la página, adjunte un manejador de eventos del lado del cliente a los botones enviados. Dentro del manejador, verifique si la casilla de verificación está marcada; de ser así, devuelva true; de ​​lo contrario, devuelva falso, que debería cancelar el envío. Si JavaScript está desactivado, entonces eso también está bien porque debería tener lugar una validación del lado del servidor porque las personas también pueden sumbitar formularios de otras maneras.

0

Usted puede hacer lo que hizo el anterior pero con un retorno Si no se marca como que

if (!cbxTerms.Checked) 
{requiredlabel.text="*"; 
return;} 

Puede configurar una etiqueta manualmente para indicar al usuario que se necesita THS campo

+0

El problema que tengo es que, incluso con el código que proporcioné, el grupo de validación que utiliza el botón no está fallando cuando la casilla no está marcada. –

0

incluso se puede evitar la devolución de datos si la casilla de verificación no está marcada

Button1.Attributes["onclick"] = 
     "if (!$get('" + CheckBox1.ClientID + "').checked){alert('Agree with us,plz!');return false;}"; 

qué hacer todas las cosas de validación si se puede prevenir :)

o si Thurst para el grupo obligando a inválido tou puede hacer a ganar su propia validación en el lado del cliente:

function myStartUpValidation(group){ 
    var result=true; 
    //Page_ClientValidate(group); to validate group 
    for (var i = 0; i < Page_Validators.length; i++) { 
     if(Page_Validators[i].validationGroup==group){ 
     try{ 
      ValidatorValidate(Page_Validators[i]); //this forces validation in all groups 
      if(Page_Validators[i].isvalid==false){result=false;} 
      }catch(err){} 
     } 
    } 
    return result; 
} 

o un validador adicional ...

Cuestiones relacionadas