#javascript #jquery #validation
#javascript #jquery #проверка
Вопрос:
Я использую jQuery для проверки формы, и мне нужно отобразить текстовую область с минимальной длиной 1 буквы и максимальной длиной 500 букв.
Как я могу изменить параметр maxlength для проверки текстовой области с учетом только букв, а не пробелов?
Спасибо
Комментарии:
1. Если вы хотите заблокировать пользователя после X букв, вы должны использовать
keydown
вместоkeyup
предложенных в ответах2. Вам нужно создать свое собственное пользовательское правило
Ответ №1:
Вам нужно создать свое собственное пользовательское правило, см., Например:
$.validator.addMethod('customLength', function (value, elm, param) {
//Your Validation rule here
return elm.value.replace(/ /g,'').length <= 500; // return bool
});
$(document).ready(function () {
$("#form").validate({
rules: {
"name": {
required: true,
customLength: true
}
},
messages: {
"name": {
required: "Please, enter a name",
customLength: 'Custom error message!'
}
},
submitHandler: function (form) { // for demo
alert('valid form submitted'); // for demo
return false; // for demo
}
});
});
Ответ №2:
Попробуйте это:
$(document).on('keyup','textarea',function(){
if($(this).val() != ""){
var textarea = $(this).val().replace(/ /g,'');
var length = textarea.length;
if(length > 500){
alert('Limit reached');
}
}
});
Комментарии:
1. @Haryia что вы получаете на выходе? Какая-либо ошибка в консоли?
2. ошибок нет, но форма отправляется без учета элемента управления
Ответ №3:
$(document).on('keyup','textarea',function(){
var textarea = $(this).val().replace(/ /g,'');
var newLength = textarea.length;
//set to new max length (basically 500 whitespaces' length)
$(this).attr('maxlength',500 ($(this).val().length - newLength) );
});
Ответ №4:
Если вы используете jquery-validate
то, что вы упомянули. Затем, пожалуйста, добавьте еще js
один, additional-methods.min.js
который имеет дополнительные возможности для обработки пользовательской логики
HTML-страница
<html>
<head>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery-validate.js"></script>
<script type="text/javascript" src="/js/additional-methods.min.js"></script>
</head>
<body>
<form id="formID" name="formID" method="post">
<textarea id="textareaID" name="textareaID" ></textarea>
<input id="submitBtn" type="submit">
</form>
<script>
$(document).ready(function(){
$("#formID").validate({
rules: {
textareaID:{
required:true,
checkLenght:true
}
},
messages: {
textareaID:{
required:'Please enter',
checkLenght:'msg..'
}
}
});
});
$.validator.addMethod("checkLenght", function(value, element){
var count = (value.match(/d/g) || []).length;
if(count == 0 || count >500)
return false;
else
return true;
/*here is example regex you can write as per you requirement*/
});
</script>
</body>
</html>
Для вашего дальнейшего уточнения: https://jqueryvalidation.org/jQuery.validator.addMethod /
Надеюсь, мое объяснение работает для вас.
Комментарии:
1. Я могу понять, но это не работает. Я использую этот код: $ j(‘#form-concorso’).validate({ правила: { textareaID:{ требуется: true, контрольная длина: true } }, сообщения: { textareaID: { требуется: ‘Пожалуйста, введите’, Контрольная длина: ‘msg ..’ } } }); и$.validator.addMethod(«Контрольная длина», функция (значение, элемент){ возвращает elm.value.replace(/ /g,»). длина <= 500; });
2. Код слишком длинный, поэтому я создаю jsfiddle: jsfiddle.net/haryia/rc8fka3h Спасибо!
3. пожалуйста, поместите вашу
addMethod
функцию внеready
события4. ваш
script
код не соответствует тому, что вы сделали в скрипке5. Я вывожу код из готовой функции, но ситуация не меняется:(