jQuery Validate Plugin: Немецкие умлауты не работают - PullRequest
0 голосов
/ 26 июня 2018

Я использую плагин проверки jQuery (), и я уже нашел здесь ответ на StackOverflow ( Плагин проверки jQuery: принимайте только немецкие буквы ), но предоставленное решение все еще не работает для меня.

У меня есть умляуты (специальные символы), такие как Ö, Ü, ä, ß на моем языке, и я использую следующий код, чтобы в моем поле ввода не допускались цифры. К сожалению, как только кто-то входит в умлаут, я получаю сообщение, что номера не разрешены. Может кто-нибудь сказать мне, что я сделал не так:

JQuery код:

<script type="text/javascript">
  $(document).ready(function(){
    $.validator.addMethod('city', function(value, element, param) {
    var nameRegex = /^[a-zA-ZäüöÄÜÖß]+$/;
    return value.match(nameRegex);
  }, 'No numbers are allowed.');
});
</script>

Я также попробовал следующий подход:

<script type="text/javascript">
    $(document).ready(function(){
        $.validator.addMethod('city', function(value, element, param) {
        var nameRegex = /^[a-zA-Z\u0196\u0228\u0214\u0246\u0220\u0252\u0223]+$/;
        return value.match(nameRegex);
    }, 'No numbers are allowed.');
});
</script>

Мое поле ввода HTML:

<div class='row'>
    <div class='col-md-12'>
        <label>City::<span class='color-red'>*</span></label>
        <input type='text' name='city' id='city' class='form-control' required>
    </div>
</div>

У моего сайта есть кодировка = utf-8! Есть идеи, что я делаю не так? Все остальное с плагином проверки jquery работает как шарм, за исключением этой проблемы. Любая помощь будет оценена. Если кому-то нужна дополнительная информация, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 26 июня 2018

Я думаю, что вы могли бы неправильно понимать наименование правил по сравнению с именами полей. Ваш метод (правило) называется city ... однако то, что ваше поле также называется city, не означает, что это правило автоматически применяется к этому полю. Вам все равно придется объявить это в любых полях.

Я рекомендую вам изменить имя и выбрать один из следующих вариантов ...


1. Встроенный по классу

создать правило:

$.validator.addMethod('your_rule', function(value, element) {...

назначить правило с помощью class:

<input type='text' name='city' class='form-control your_rule' ....

В функции .addMethod() нет аргумента param, потому что ваша функция не принимает параметры. Если вы приняли параметры, то вы не можете назначить правило с помощью class.


2. Внутри rules объекта

создать правило:

$.validator.addMethod('your_rule', function(value, element) {....

назначить правило методом .validate():

$('#yourForm').validate() {
    rules: {
        city: {      // <- FIELD NAME
            your_rule: true   // <- RULE NAME
        },
        ....
    },....

Если вам нужно передать параметры в пользовательский метод / правило / функцию, вы должны использовать # 2.

$.validator.addMethod('your_rule', function(value, element, param) {....

$('#yourForm').validate() {
    rules: {
        city: {      // <- FIELD NAME
            your_rule: param   // <- RULE NAME
        },
        ....
    },....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...