Проверка полей комбинированной формы
После нескольких дней неудачного тестирования и попыток понять, что я делаю не так, я решил спросить об этом здесь.
Я пытаюсь написать пользовательское правило проверки, которое проверяет комбинацию из 2 полей (имя и фамилия). Само правило очень прямолинейно, оно имеет максимальную длину.
Я создал это правило и добавил его в поле формы, теперь я не могу заставить его работать. Просто нет ответа, сообщений об ошибках не найдено (нет в консоли или журналы). Я начал с отдельного файла js для пользовательских правил/пользовательских js и добавил его в page.xml . Тем временем я попытался добавить его в validation.js чтобы убедиться, что правило загружено, результат тот же.
У меня есть следующие вопросы:
- Если проверяется 2 поля, нужно ли устанавливать правило для обоих (css-класс)
- Как бы я отладил правила проверки
Вот что я пробовал:
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. Любая помощь будет признательна.
1 answers
- При установке класса CSS для нескольких элементов проверка будет инициирована несколько раз. Я думаю, это не то, чего вы хотите достичь. Вместо этого я предлагаю установить класс проверки только для последнего элемента (здесь: фамилия). Недостатком является то, что только этот последний элемент формы получит рекомендации по проверке при сбое.
- Вы можете просто использовать любую панель инструментов отладки, доступную для вашего браузера, которая поставляется с отладчиком JavaScript.
Я просто попытался добавить проверка полей имени и придумал это решение:
['validate-name-length', 'The combination of first & 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;
}]
Это
- принимает элемент для проверки,
- переходит к общему элементу контейнера,
- собирает все входные данные внутри (т.Е. поля имен) и
- складывает их длины значений.