Jquery form validate не разрешает пространство для поля имени пользователя?

Я использовал http://bassistance.de/jquery-plugins/jquery-plugin-validation/

моя форма проверяет:

$("#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"

    }
});

Кто-нибудь помогает мне проверять, не допускает ли место на имени пользователя?

спасибо

Ответы

Ответ 3

Я использовал ответ @Reigel, но это не сработало для меня.

Я изменил свой пример следующим образом:

  $(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
          }
       }
    });


  })

По-моему, noSpace не несет ответственности за проверку пустой TextBox (Input). Он отвечает за проверку значения, если некоторые вещи были введены.

И будет хорошей идеей, если вы используете jQuery.validator.addMethod... в другом JS файле и добавите этот JS файл на свою главную страницу или некоторые подобные вещи.

Ответ 4

Я просто добавляю событие onfocusout и автоматически настраиваю все поля формы, а также, если пользователь вводит только пробелы (пробелы), он удалит их и отобразит нужное поле:

onfocusout: function (element, event) {

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

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

Работает также, когда пользователь отправляет форму напрямую, потому что, когда он нажимает кнопку отправки, событие запускается.

Ответ 5

Пример:

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

Ответ 6

Поскольку jquery-validation 1.15.0 более чистым подходом является использование обратного вызова нормализатора:

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

Нормализатор (неизменно) преобразует значение до проверки.

Подробнее см. Документы нормализатора.