2010-01-21 4 views
7

Quiero validar algunos cuadros de texto asp.net con el complemento jQuery Validation encontrado en http://docs.jquery.com/Plugins/Validation, pero parece que los elementos deben estar entre una etiqueta de formulario. Si tengo solo un par de elementos, difícilmente llamaría a eso un formulario, así que preferiría no tenerlos envueltos dentro de un elemento de formulario. ¿Hay alguna forma de evitar esto? Además, si tengo dos botones en el formulario, un botón de cancelar y enviar y quiero que el formulario solo se valide cuando se hace clic en el botón Enviar, pero no en el botón cancelar, ¿cómo se logra esto?¿El complemento de validación de Jquery requiere una etiqueta de formulario?

+0

Un formulario es cómo le dice al navegador a dónde enviar los datos. Sin uno, los controles son inútiles ... a menos que falsifiques tener un formulario en JavaScript, que viola la regla 2: http://icant.co.uk/articles/pragmatic-progressive-enhancement/#build – Quentin

+0

¿Qué pasa con la segunda parte de la pregunta? , validando solo si se hace clic en un botón de enviar, por ejemplo. Tengo un botón para cancelar que, al hacer clic, no debe hacer nada, pero aún así valida el formulario. – Xaisoft

+0

¿Estás haciendo copias de todo el post? Al igual que si su botón Cancelar simplemente borra los campos, ¿por qué convertirlo en un botón de envío? Y no un botón? Si lo haces, yo no creo que active la validación. Podrías hacer que ambos botones y en un botón llamarían al método de envío (lo harías en jquery).Luego, el siguiente sería usando el método valid() que viene con la validación de jquery. De esta forma puedes hacer una publicación de Ajax. – chobo2

Respuesta

2

tengo sólo un par de elementos, me casi no llamaría a eso una forma, por lo que habría preferiría no tenerlos envuelto dentro de un elemento de formulario .

Si los elementos no están dentro de una etiqueta de formulario, entonces no es un documento HTML válido, por lo que el comportamiento en la secuencia de comandos puede ser inestable dependiendo de cómo trate el navegador el HTML mal formado.

La mayoría de los navegadores crearán un formulario implícitamente, pero ahora no tiene control sobre el comportamiento del formulario. Los valores predeterminados suelen ser un formulario de acción posterior dirigido a la URL de la página solicitada.

El problema es que probablemente no tenga idea de qué selector usar en JQuery para obtener una referencia al formulario ... pero supongo que $("form") haría el truco.

validar cuando se hace clic en el botón de enviar, pero no el botón de cancelación

Las intersecciones de plug-in y se ejecuta en el caso de presentar de una forma. En general, se anulan los botones son elementos de entrada HTML con el atributo type definido como "reset": botón de tipo

<input type="reset" value="cancel" /> 

Un reinicio no hará que el formulario para enviar, y esto no va a desencadenar la validación.

Si usa otro tipo de botón, asegúrese de que onclick incluso devuelve falso. Esto cancela la acción de envío del formulario, pero aún le permite ejecutar javasctipt cuando hace clic en el botón.

+0

Estoy usando un botón asp: para cancelar y enviar. – Xaisoft

+0

De hecho, descubrí la segunda parte. Establecí la propiedad UseSubmitBehavior en falso para el botón cancelar y se convirtió en un tipo de entrada regular = botón en lugar de un tipo = enviar y eso resolvió el problema. Decidí usar el script LiveValidation. Funciona bastante bien Gracias por la ayuda. – Xaisoft

2

El complemento de validación de jquery requiere un elemento de formulario para funcionar, por lo que debe tener los campos de formulario (sin importar cuán pocos) contenidos dentro de un formulario.

Puede decirle al complemento de validación que no opere en el envío del formulario, luego validarlo manualmente cuando se hace clic en el botón de enviar correcto.

Por ejemplo, el uso de una clase para identificar la correcta botón de envío:


$(document).ready(function() { 
    var form = $("form"); 

    form.validate({ 
    onsubmit: false, 
    }); 

    //Validate form only if validation submit button is clicked 
    //Allows cancel submit buttons to function properly 
    $('.validate', form).click(function() { 
    if (form.valid()) { 
     form.submit(); 
    } 
    else { 
     form.validate().form(); 
    } 
    }); 

}); 
Cuestiones relacionadas