2010-05-31 21 views
14

he utilizado http://bassistance.de/jquery-plugins/jquery-plugin-validation/jquery form validate no allow space for username field?

mi Validar formulario:

$("#form_person").validate({ 
    rules: { 


     username: { 
      required: true, 
      minlength: 2, 
      maxlength:15 
     }, 
     password: { 
      required: true, 
      minlength: 2 
     }, 
     confirm_password: { 
      required: true, 
      minlength: 2, 
      equalTo: "#password" 
     }, 
     email: { 
      required: true, 
      email: true 
     } 

    }, 
    messages: { 

     username: { 
      required: "Please enter a username", 
      maxlength:"max length 15 digits", 
      minlength: "Your username must consist of at least 2 characters" 
     }, 
     password: { 
      required: "Please provide a password", 
      minlength: "Your password must be at least 5 characters long" 
     }, 
     confirm_password: { 
      required: "Please provide a confirm password", 
      minlength: "Your password must be at least 5 characters long", 
      equalTo: "Please enter the same password as above" 

    } 
}); 

alguien que me ayude a validar no permitir espacio en nombre de usuario?

gracias

+0

Creo 'requerido: true', que ya está en ... – Reigel

+0

sin que permiten space.More puede probar aquí http://jquery.bassistance.de/validate/demo/ – kn3l

+0

probó el enlace y sí que funcione como se esperaba ... es decir 'Este campo es required.' cuando introduce espacios y pulsa el botón enviar ... ahhh – Reigel

Respuesta

43

que puede intentar algo como esto:

$(document).ready(function(){ 

    jQuery.validator.addMethod("noSpace", function(value, element) { 
    return value.indexOf(" ") < 0 && value != ""; 
}, "No space please and don't leave it empty"); 


$("form").validate({ 
    rules: { 
     name: { 
      noSpace: true 
     } 
    } 
    }); 


}) 

quick demo
more on addMethod here
and an example also here.

+0

Muchas gracias, esto es realmente lo que estoy buscando, – kn3l

+3

pero estoy usando "required: true" también lo que se muestra "por favor ingrese un valor "msg en lugar de" Sin espacio, por favor y no lo deje vacío "; –

4

que utilizan la respuesta de @Reigel pero no funcionó para mí.

Tengo cambiar su ejemplo como este:

$(document).ready(function(){ 

    jQuery.validator.addMethod("noSpace", function(value, element) { 
     return value == '' || value.trim().length != 0; 
    }, "No space please and don't leave it empty"); 


    $("form").validate({ 
     rules: { 
      name: { 
       noSpace: true 
      } 
     } 
    }); 


    }) 

En mi opinión nospace no es responsable de verificar cuadro de texto vacío (de entrada). Es responsable de verificar el valor si se ingresaron algunas cosas.

Y será una buena idea si usa jQuery.validator.addMethod... en otro archivo JS y agrega este archivo JS a su página maestra o algo así.

+0

Esta debería ser la respuesta correcta. Trabajó para mi – marknt15

1

Acabo de añadir el evento onfocusout y su alineación automáticamente todos los campos del formulario y también si el usuario introducirá sólo espacios (espacios en blanco) que eliminará ellos y mostrará el mensaje requerido campo:

onfocusout: function (element, event) { 

    //Get Objects 
    $element = $(element); 

    //Remove whitespace 
    if ($element.is(':input') && !$element.is(':password')) { 
     $element.val($.trim($element.val())); 
    } 
}, 

Está funcionando también cuando el usuario envía el formulario directamente porque cuando hace clic en el botón de enviar el evento se desencadena.

0

ejemplo como este:

$('#username').keypress(function(e) { 
     if(e.which === 32) 
     return false; 
    }); 
0

Desde jquery-validación 1.15.0 un enfoque más limpio es utilizar la devolución de llamada normalizador:

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     normalizer: function(value) { 
     return $.trim(value); 
     } 
    } 
    } 
}); 

El normalizador (inmutable) transforma el valor antes de la validación toma lugar.

Véase el Normalizer Docs para más detalles.