Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2016, 16:03   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Jquery.validate кирилица

Здравствуйте!
Подскажите пожалуйста, почему когда я ввожу кирилицу, ошибка не выводится?

Код HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Test jQuery Validation Form</title>
  <script type="text/javascript" src="/validate/jquery.min.js"></script>
  <script type="text/javascript" src="/validate/jquery.validate.1.15.1.js"></script>
 
<script type="text/javascript">
       $('document').ready(function () {
 
  $.validator.addMethod('reg_login', function (value) {
     var result = true;
     var iChars = "!@#$%^&*()+=-[]\\\';,./{}|":<>?"+"абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"+" ";
      for (var i = 0; i < value.length; i++) {
          if (iChars.indexOf(value.charAt(i)) != -1) {
              return false;
          }
      }
      return result;
  }, '');
            $('#form_reg').validate({
 
                //Правила для проверки
 
                rules: {
                    "reg_login": {
                       required: true,
                       minlength: 5,
                       maxlength: 15,
                       remote: {url: "/validate/reg/check_login.php", type:"post" }
        }
        },
                //Тексты предупреждений
 
                messages: {
 
                    "reg_login": {
                        required: "Укажите Логин!",
                        validName: "Символы !@#$%^&*()+=-[]\\\';,./{}|":<>? и пробелы запрещены. Также нельзя использовать русские буквы",
                        minlength: "От 5 до 15 символов!",
                        maxlength: "От 6 до 15 символов!",
                        remote: "Логин занят!"
                      }
             },
 
 
            });
 
        });
 
 </script>
</head>
 
<body>
 
<form method="post" id="form_reg" action="#">
<p id="reg_message"></p>
<div id="block-form-registration">
<ul id="form-registration">
 
<li>
<label>Логин</label>
<span class="star">*</span>
<input type="text" name="reg_login" id="reg_login" />
</li>
 
<p align="right"><input type="submit" name="reg_submit" id="form_submit" value="Регистрация"/> </p>
 
</form>
</body>
</html>
Женя32 вне форума Ответить с цитированием
Старый 02.12.2016, 16:20   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

У тебя синтаксические ошибки в строке с буквами. Даже парсер форума не понимает как это парсить

Код:
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|":<>?"+"абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"+" ";
Вот так работат!
Код:
<!DOCTYPE html>
<html lang="en-UK">
<head>
    <meta charset="utf-8"/>
    <title>Validation</title>
 
    <script type="text/javascript">
        var iChars = '!@#$%^&*()\\+=-[]\';,./{}|:<>?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';


        function mValidate(){

            var input = document.getElementById('reg_login');
            var value = input.value;

            for (var i = 0; i < value.length; i++) {
                if (iChars.indexOf(value.charAt(i)) != -1) {
                    alert('FALSE'); 
                    return false;

                }
            }

            alert('TRUE'); 
            return true;
        }
 
 </script>
</head>
 
<body>
 
    <input type="text" name="reg_login" id="reg_login" />
    <br/> 
    <button onclick="mValidate()">mValidate</button>

</body>
</html>
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 02.12.2016, 16:39   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Во-первых,
Цитата:
Сообщение от Женя32 Посмотреть сообщение
Код:
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|":<>?"+"абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"+" ";
это что за ужас, летящий на крыльях ночи?!!
Мало того, что ужас, так ещё и не корректно записан (кавычка входящая внутрь строки закрывает строку и далее символы не распознаются - получается ошибка.

во-вторых, Вы неправильно используете validator.addMethod

в-третьих, скажите, а какую задачу должен решать этот ужасающий код?
Запретить какие-то символы? А почему именно эти?
А если пользователь введёт
胜利者
или
გამარჯვებული
или
الفائز

то никаких проблем не будет?
Может быть, стоит определить множество ДОПУСТИМЫХ символов?
тем более, я подозреваю, что допустимыми будут только обычные латинские символы?

А для проверки использовать регулярное выражение.
Которое для того и придумано, чтобы облегчить проверку строки на соответствие шаблону, чтобы не перебирать символы по одном и проверять их вхождение в набор.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.12.2016, 17:44   #4
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

А можно ли вызвать функцию mValidate() по нажатию клавиш клавиатуры?

Последний раз редактировалось Alex11223; 02.12.2016 в 18:07.
Женя32 вне форума Ответить с цитированием
Старый 02.12.2016, 18:14   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
...Может быть, стоит определить множество ДОПУСТИМЫХ символов?...
Да, Вы правы.
А как определить множество допустимых символов?
Женя32 вне форума Ответить с цитированием
Старый 02.12.2016, 18:38   #6
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
А можно ли вызвать функцию mValidate() по нажатию клавиш клавиатуры?
Код:
window.addEventListener('keydown', function(evt){
    
    if( evt.keyCode == 27 ) {
        // 27 == ESC
        mValidate();
    }

});
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 03.12.2016 в 14:38.
pompiduskus вне форума Ответить с цитированием
Старый 03.12.2016, 12:04   #7
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
window.addEventListener('keydown', function(evt){

if( evt.keyCode == 27 ) {
// 27 == ESC
mValidate();
}

});
Я вот так сделал, но, ни какой реакции нет... Почему?:

Код HTML:
<script type="text/javascript">
       $('document').ready(function () {
       var iChars = '-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';


        function mValidate(){

            var input = document.getElementById('reg_login');
            var value = input.value;

            for (var i = 0; i < value.length; i++) {
                if (iChars.indexOf(value.charAt(i)) != -1) {
                    alert('TRUE'); 
                    return true;

                }
            }

            alert('FALSE'); 
            return false;
        }
		window.addEventListener('keydown', function(evt){
        if( evt.keyCode == 27 ) {
         // 27 == ESC
         mValidate();
         }
     });
 
            $('#form_reg').validate({

                //Правила для проверки

                rules: {
                    "reg_login": {
                       required: true,
                       minlength: 5,
                       maxlength: 15,
     	               remote: {url: "/validate/reg/check_login.php", type:"post" }
		}
		},
                //Тексты предупреждений

                messages: {

                    "reg_login": {
                        required: "Укажите Логин!",
						validName: "Символы !@#$%^&*()+=-[]\\\';,./{}|\":<>? и пробелы запрещены. Также нельзя использовать русские буквы",
                        minlength: "От 5 до 15 символов!",
                        maxlength: "От 6 до 15 символов!",
                        remote: "Логин занят!"
                      }
             },


            });

        });

 </script>
Женя32 вне форума Ответить с цитированием
Старый 03.12.2016, 14:49   #8
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Я только заменил вот эту строку
Код:
$('document').ready(function(){
на вот эту. Они делают одно и тоже ! Просто первый вариант на JQuery а у меня на чистом JS.
Код:
window.addEventListener('load', function(){
Вот так попробуй! Пытайся вникнуть в код ...

Код:
<input id="reg_login" value="reg_login test"/>

<script type="text/javascript">

var iChars = '-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

function mValidate(){

    var input = document.getElementById('reg_login');
    var value = input.value;

    for (var i = 0; i < value.length; i++) {
        if (iChars.indexOf(value.charAt(i)) != -1) {
            alert('TRUE'); 
            return true;
        }
    }

    alert('FALSE'); 
    return false;

}

//$('document').ready(function(){
window.addEventListener('load', function(){


    window.addEventListener('keydown', function(evt){
        if( evt.keyCode == 27 ) {
            // 27 == ESC
            mValidate();
        }
    });
    /*
    $('#form_reg').validate({
        //Правила для проверки
        rules: {
            "reg_login": {
            required: true,
            minlength: 5,
            maxlength: 15,
            remote: {url: "/validate/reg/check_login.php", type:"post" }
            }
        },
        //Тексты предупреждений
        messages: {
            "reg_login": {
                required: "Укажите Логин!",
                validName: 'Символы !@#$%^&*()+=-[]\\\';,./{}|":<>? и пробелы запрещены. Также нельзя использовать русские буквы',
                minlength: "От 5 до 15 символов!",
                maxlength: "От 6 до 15 символов!",
                remote: "Логин занят!"
            }
        },

    });
    */

});

 </script>
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 03.12.2016, 14:52   #9
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Можно даже вот так. Суть не меняется.

Код:

function hello_world(){
    console.log('hello world');

}


window.addEventListener('keydown', function(evt){
    if( evt.keyCode == 27 ) {
        hello_world();
    }
});
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 03.12.2016, 15:42   #10
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Можно даже вот так. Суть не меняется.

Код:


function hello_world(){
console.log('hello world');

}


window.addEventListener('keydown', function(evt){
if( evt.keyCode == 27 ) {
hello_world();
}
});
А вот суда, где выводятся сообщения: "Укажите Логин!" и "Логин занят!", можно вывести такое сообщение?: "Символы !@#$%^&*()+=-[]\\\';,./{}|\":<>? и пробелы запрещены. Также нельзя использовать русские буквы".

Код HTML:
 ... 
                 messages: {

                    "reg_login": {
                        required: "Укажите Логин!",
						validName: "Символы !@#$%^&*()+=-[]\\\';,./{}|\":<>? и пробелы запрещены. Также нельзя использовать русские буквы",
                        minlength: "От 5 до 15 символов!",
                        maxlength: "От 6 до 15 символов!",
                        remote: "Логин занят!"
                      }
             },
...
Женя32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery.validate выводит сообщения ни в том месте Женя32 JavaScript, Ajax 4 24.11.2016 14:28
jquery.validate реагирует только на одно поле Женя32 JavaScript, Ajax 2 24.11.2016 11:50
jquery validate ts-alan JavaScript, Ajax 0 11.12.2015 12:57
Validate WizarD.89 C# (си шарп) 1 11.04.2013 10:15
Кирилица в C++ ROD Помощь студентам 2 06.12.2008 14:50