обработка формы после нажатия на Submit

evgen26

Новичок
обработка формы после нажатия на Submit

Есть форма:
$form = new HTML_QuickForm('frmreg', 'post', '', '', 'onsubmit="return checknamesend();");
$form->addElement('header', 'MyHeader', 'Регистрация физического лица');
$form->addElement('text', 'FIO', 'Ф.И.О.');
$form->addElement('text', 'email', 'e-mail');
$form->addElement('select', 'town', 'город:', $towns);
$form->addElement('text', 'phone', 'телефон');
$form->addElement('textarea', 'about', 'дополнительная информация о Вас');
$form->addElement('submit', 'btnBack','<Назад');
$form->addElement('submit', 'btnSubmit', 'Зарегестрировать');
$form->addRule('FIO', 'Незаполнено ФИО!', 'required', '', 'client');
$form->addRule('email', 'Незаполнен e-mail!', 'required', '', 'client');
$form->addRule('email', 'Неправильно заполнен e-mail!', 'email', '', 'client');
$form->addRule('email', 'Максимальная длина ФИО не должна превышать 100 символов', 'maxlength', 100, 'client');
$form->addRule('email', 'Максимальная длина e-mail не должна превышать 100 символов', 'maxlength', 100, 'client');
$form->addRule('FIO', 'ФИО должно содержать только буквы!', 'lettersonly', '', 'client');
$form->applyFilter('FIO', 'trim');
$form->setRequiredNote('* поля, обязательные к заполнению');

При нажатии на submit форма проверяет правила addRule и переходит на другую страницу. При этом javascript-функция checknamesend(),указанная в конструкторе формы, не выполняется. Мне надо чтобы вначале шла проверка addRule, а потом, если все нормально, шла проверка javascript.Как это сделать?
 

Altex

Новичок
А QuickForm генерирует javascript для проверки правил, задаваемых с помощью addRule?
 

evgen26

Новичок
я quickform юзаю 3-й день. Где именно там parse error?Функция javascript описана выше по коду, просто не стал ее приводить чтобы не загромождать код. У меня все работает, только не проверяет checknamesend(). Вот я и спрашиваю, как это сделать??????????

-~{}~ 03.07.07 16:53:

qf генерит следующий код(оставлена только одна проверка на фио чтобы не загромождать форум)
<script type="text/javascript">
//<![CDATA[
function validate_frmreg(frm) {
var value = '';
var errFlag = new Array();
var _qfGroups = {};
_qfMsg = '';

value = frm.elements['FIO'].value;
if (value == '' && !errFlag['FIO']) {
errFlag['FIO'] = true;
_qfMsg = _qfMsg + '\n - Незаполнено ФИО!';
}

if (_qfMsg != '') {
_qfMsg = 'Invalid information entered.' + _qfMsg;
_qfMsg = _qfMsg + '\nPlease correct these fields.';
alert(_qfMsg);
return false;
}
return true;
}
//]]>
</script>

<form onsubmit="try { var myValidator = validate_frmreg; } catch(e) { return true; } return myValidator(this);" action="/my.php" method="post" name="frmreg" id="frmreg">
<div>
<input name="_qf__frmreg" type="hidden" value="" />
 

WP

^_^
В первой же строке кавычка не закрыта последняя.
 

evgen26

Новичок
не не в этом дело - у меня закрыта в коде. Просто когда удалял ненужное кавычку тоже удалил.
В сгенеренном коде даже нет ссылки на функцию javascript-checknamesend()

-~{}~ 03.07.07 17:47:

может это можно сделать с помощью addGroupRule или addFormRule?и как?
 

BRat

o_0
$form = new HTML_QuickForm('frmreg', 'post', '', '', array('onsubmit'=>'return checknamesend();'));

а так?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
А, ну да, при добавлении правила с $validation = 'client' значение атрибута onsubmit формы банально затирается.
В общем если нужно, чтобы и проверки QuickForm работали, и checknamesend(), нужно непосредственно перед выводом формы, после добавления всех правил сделать что-то типа
PHP:
$form->setAttribute('onsubmit', 'if (!checknamesend()) return false; ' . $form->getAttribute('onsubmit'));
 

evgen26

Новичок
ну спасибо дружище!выручил все работает!а то я решил замутить проверку через аякс после проверки qf.спасибо еще раз!!!!!
 
Сверху