Для проверки заполнения формы вместо
JHtml::_('behavior.formvalidation');
лучше использовать добавления кода валидатора напрямую
window.addEvent('domready', function() {
var myFormValidator = new Form.Validator($('adminForm'));
});
где adminForm - id формы
<form action="#" method="post" name="adminForm" id="adminForm">
Существую предопределеные правила проверки
- required
- length
- minLength
- maxLength
- validate-numeric
- validate-integer
- validate-digits
- validate-alpha
- validate-alphanum
- validate-date
- validate-email
- validate-url
- validate-currency-dollar
- validate-one-required
Чтобы использовать предопределенное правило в нужный тэг добавляем соответствующий класс:
<input type="text" class="validate-alpha" value="" />
В данном случае, если поле оставить пустым ошибки не будет, чтобы сделать это поле обязательным, добавим еще валидатор required
<input type="text" class="validate-alpha required" value="" />
Вывод сообщений об ошибках делается так:
window.addEvent('domready', function() {
var myFormValidator = new Form.Validator($('adminForm'),
{
onElementFail: function(el, validator) {
alert(this.getValidator(validator[0]).getError(el));
}
}
);
});
Самое сложное тут было найти сообщение об ошибке )
Теперь осталось перевести на русский сами сообщения об ошибках
l = Locale.getCurrent().name;
Locale.define(l, 'FormValidator', {
alpha: "Пожалуйста, используйте только буквы (A-Z). Без пробелов и других символов."
});
Можно сразу добавить переводы для всех предопределенных проверок.
Перевел с помощью переводчика Google
window.addEvent('domready', function() {
l = Locale.getCurrent().name;
Locale.define(l, 'FormValidator', {
required: "Это поле обязательно для заполнения",
numeric: 'Пожалуйста, введите только числовые значения ("1" или "1,1" или "-1" или "-1,1")',
integer: "Пожалуйста, введите целое число. Номера с десятыми (например, 1,25) не допускаются",
digits: "Пожалуйста, используйте только цифры, избегайте пробелов и других символов, таких как точки или запятые.",
alpha: "Пожалуйста, используйте только буквы (A-Z). Без пробелов и других символов.",
alphanum: "Пожалуйста, используйте только буквы (AZ) и цифры (0-9). Без пробелов и других символов.",
email: "Пожалуйста, введите правильный адрес электронной почты. Например, fred@domain.com",
url: "Пожалуйста, введите правильный URL"
});
var myFormValidator = new Form.Validator($('adminForm'),
{
onElementFail: function(el, validator) {
alert(this.getValidator(validator[0]).getError(el));
}
}
);
});
Можно также добавлять свои правила проверки:
myFormValidator.add('isEmpty', {
errorMsg: 'This field is required',
test: function(element){
if (element.value.length == 0) return false;
else return true;
}
});
или еще
myFormValidator.add('validate-alpha',
{
errorMsg: 'Пожалуйста, используйте только буквы (A-Z, А-Я). Без пробелов и других символов.',
test: function(element)
{
regex=/^[a-zA-Zа-яА-Я]+$/;
return element.get('value').test(regex,'i');
}
}
);
Проверку можно делать не для всех полей сразу, для этого устанавливаем свойство serial в false
var myFormValidator = new Form.Validator(
$('adminForm'),
{
serial: false,
onElementFail: function(el, validator) {
alert(this.getValidator(validator[0]).getError(el));
}
}
);