Проверка полей комбинированной формы


После нескольких дней неудачного тестирования и попыток понять, что я делаю не так, я решил спросить об этом здесь.

Я пытаюсь написать пользовательское правило проверки, которое проверяет комбинацию из 2 полей (имя и фамилия). Само правило очень прямолинейно, оно имеет максимальную длину.

Я создал это правило и добавил его в поле формы, теперь я не могу заставить его работать. Просто нет ответа, сообщений об ошибках не найдено (нет в консоли или журналы). Я начал с отдельного файла js для пользовательских правил/пользовательских js и добавил его в page.xml . Тем временем я попытался добавить его в validation.js чтобы убедиться, что правило загружено, результат тот же.

У меня есть следующие вопросы:

  1. Если проверяется 2 поля, нужно ли устанавливать правило для обоих (css-класс)
  2. Как бы я отладил правила проверки

Вот что я пробовал:

Validation.addAllThese([
    ['validate-name-length', 'The combination of first & last name cannot exceed 30 characters.<br/>Use initials if needed', function(v) {

        var length_firstname = $('billing[firstname]').value.length;
        var length_lastname = $('billing[lastname]').value.length;
        var result = true;

    if ((length_firstname + length_lastname) > 30) {
             result = false;
        } else {
             result = true;
        }
        return result;
    }]
}];

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

У меня сильное чувство, что я совершил какую-то глупую ошибку, и я просматриваю ее. Я очень быстро запутываюсь в использовании прототипа/jQuery в Magento. Любая помощь будет признательна.

Author: YorickH, 2015-04-09

1 answers

  1. При установке класса CSS для нескольких элементов проверка будет инициирована несколько раз. Я думаю, это не то, чего вы хотите достичь. Вместо этого я предлагаю установить класс проверки только для последнего элемента (здесь: фамилия). Недостатком является то, что только этот последний элемент формы получит рекомендации по проверке при сбое.
  2. Вы можете просто использовать любую панель инструментов отладки, доступную для вашего браузера, которая поставляется с отладчиком JavaScript.

Я просто попытался добавить проверка полей имени и придумал это решение:

['validate-name-length', 'The combination of first &amp; last name cannot exceed 30 characters.<br/>Use initials if needed.', function (v, elm) {
    var length = 0;
    elm.up(".customer-name").select("input").each(function (input) {
        length += input.getValue().length;
    });
    return length <= 30;
}]

Это

  • принимает элемент для проверки,
  • переходит к общему элементу контейнера,
  • собирает все входные данные внутри (т.Е. поля имен) и
  • складывает их длины значений.
 2
Author: mam08ixo, 2015-04-09 14:15:28