Введение
Joomla 1.5 содержит поведения JHTMLBehavior:: formvalidation (), которая позволяет сценарий validate.js. Он использует MooTools и позволяет вашей формы и ее элементов для проверки.
Примечание: Для более поздних версиях Joomla (1.5.2) использовать JHTML ::_(' behavior.formvalidation ') вместо JHTMLBehavior:: formvalidation ()
Включить проверки
Единственное, что вам нужно сделать, это набор классов формы и элементы, указанные значения. Класс:
Форма
- Формы проверки -> Включить проверку
- Обязательно
- Проверка-имя пользователя
- Проверка-пароль
- Проверка-цифровой
- Проверка электронной почты-
- Проверка-[CUSTOM] -> пользовательские обработчики должны быть установлены то!
- Если некоторые элементы не проверяют они получат класса
- Недействительными
Если у вас стиль класса в каскадных стилей, пользователи будут иметь возможность видеть, какие поля не правы. Например:
.invalid {color:red;}Принимать только форму после проверки
Если вы не хотите форме представить ничего, если значения проверяются, вот хороший сценарий:
<?php JHTMLBehavior::formvalidation(); ?>
<script language="javascript">
function myValidate(f){
if(document.formvalidator.isValid(f)){
f.check.value='<?php echo JUtility::getToken(); ?>'; //send token
returntrue;
}
else{
var msg = 'Some values are not acceptable. Please retry.';
//Пример того, как тест конкретных областях
if($('email').hasClass('invalid')){msg += '\n\n\t* Invalid E-Mail Address';}
alert(msg);
}
returnfalse;
}
</script>
<form id="WV-form" method="post"class="form-validate" onSubmit="return myValidate(this);">
<input type="hidden" name="check" value="post"/>
...
<input type="text" name="email" id="email" size="30"class="required validate-email"/>
...
<input type="submit" value="Submit" />
</form>Страницы, который получает значение может проверить несколько вещей:
defined( '_JEXEC' ) or die( 'Restricted access' ); //Verify Joomla enabled
$jAp=& JFactory::getApplication();
if ($_POST['check']!=JUtility::getToken()) {
// Первые проверки (по ошибке Javascript или другие методы), что форма не была представлена без проверки
if ($_POST['check']=='post') $jAp->enqueueMessage('Please check all the fields of the form, aub.<br/>
If your browser blocks Javascript, then this form will never be successful. This is a security measure.','error');
// Если проверить все еще не является действительным маркером, ничего не делать. Это может быть нападение обманывать
или другими незаконными представления формы
return false;
}
Обработчиков
Если вы хотите пользовательский обработчик, можно добавить в класс, как в следующем примере (определяется после validate.js):
Window.onDomReady(function() {
document.formvalidator.setHandler('birth', function(value) {
regex=/^\d{4}(-\d{2}){2}$/;
return regex.test(value);
})
})Вы можете установить любой класс для проверки при рождении, чтобы сделать его проверки как YYYY-MM-DD.
(Действительно дата не проверено!)
