2011-07-01 16 views
26

Estoy tratando de utilizar 'errorPlacement' de jQuery Validación DOCS:jQuery Validación - error de colocación

$("#myform").validate({ 
    errorPlacement: function(error, element) { 
    error.appendTo(element.parent("td").next("td")); 
    }, 
    debug:true 
}) 

quiero poner de error antes de entrada no válida, pero esto no funciona:

$("#myform").validate({ 
     errorPlacement: function(error, element) { 
     error.appendTo(element.parent("form").prev("input")); 
     }, 
     debug:true 
    }) 

LIVE DEMO

¡Cualquier ayuda muy apreciada!

+0

¿qué aspecto tiene el marcado como y donde en ese markup ¿quieres poner el error? – kinakuta

+0

@kinakuta: se ha agregado la demostración en vivo a la pregunta – Iladarsda

+0

, por lo que desea que aparezca el mensaje de error sobre el cuadro de texto correspondiente. – kinakuta

Respuesta

42

Desde que desea insertar el mensaje de error antes de que el elemento no válido, utilice insertBefore():

errorPlacement: function(error, element) { 
    error.insertBefore(element); 
} 
+0

Hamidi Gracias! Eso está funcionando! Casi ... como puede ver en mi ejemplo, en realidad hay dos entradas para la contraseña (una para el efecto onfocus y otra real), podemos especficar eso para #username insertbefore(); y para #realpassword insertBefore ('# password') ?? – Iladarsda

+0

Esto está funcionando correctamente sólo para #Password: 'errorPlacement: function (error, elemento) { \t \t \t \t \t if ($ ('etiqueta [para = "realpassword"]')) {error.insertBefore (' #contraseña'); } \t \t \t \t \t else if (('label [for = "username"]')) {error.insertBefore ('# username'); } \t \t \t \t \t \t \t \t}, '¿Por qué ?? – Iladarsda

+0

@ Pete, debería funcionar, pero el mensaje de error sigue apareciendo después del elemento '' en mi navegador. El padre flotante '' parece ser el problema ... –

2

Otra opción es ...

errorPlacement: function (error, element) { 
    element.before(error); 
    } 
12

Sólo hay que poner la parte en la que desea que el error

<label for="[your checkbox id]" generated="true" class="error"></label> 

Ex:

<label><input type="checkbox" name="checkbox" id="checkbox" value="1" > Checkbox content</label> 
<label for="checkbox" generated="true" class="error"></label> 
+0

Solución muy elegante y elegante – gouravtiwari21

+0

como querido muy genial – mghhgm

0

me recomiendan utilizar una plantilla HTML para especificar la posición y el estilo de esta manera:

<input name="patient_gender" required> 
<label for="patient_gender" class="validation_error_message help-block"></label> 

y función sobrescribir para la colocación de error

$.validator.setDefaults({ 
    errorPlacement: function(error, element) { 
     var name = element.attr('name'); 
     var errorSelector = '.validation_error_message[for="' + name + '"]'; 
     var $element = $(errorSelector); 
     if ($element.length) { 
      $(errorSelector).html(error.html()); 
     } else { 
      error.insertAfter(element); 
     } 
    } 
}); 
Cuestiones relacionadas