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"
}
});
Кто-нибудь помогает мне проверять, не допускает ли место на имени пользователя?
спасибо
Ответы
Ответ 1
вы можете попробовать что-то вроде этого:
$(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
}
}
});
})
оперативная демонстрация
подробнее о addMethod здесь
и пример также здесь.
Ответ 2
Взгляните на дополнительные методы, существует правило nowhitespace
.
Ответ 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 );
}
}
}
} );
Нормализатор (неизменно) преобразует значение до проверки.
Подробнее см. Документы нормализатора.