Здравствуйте, долго реализовывал с помощью знающих людей в коде js, сделал валидацию, поставил в админку, там нет капчи, так же решил поставить на комментарии данный метод валидации.
Есть проблема, как добавить в валидацию что бы капча проверялась ???
Сайт на фраемворке кохана 3.1, валидацию с перезагрузкой страницы отключил. решил сделать через js.
Данный метод работает так, при нажатии на отправить, идет проверка формы, далее js скрипт перекидывает в валидации по id где она выводится, у меня стоит через скрол. это видно в скрипте.
<!-- валидация для формы -->
<script type='text/javascript'>
function checkForm(obj, elems) {
var element, pattern;
for (var i = 0; i < obj.elements.length; i++) {// пробегаемся по всем элементам формы
element = obj.elements[i];
// Проверяем только нужные поля
if (elems != undefined)
if (elems.join().indexOf(element.type) < 0) continue;
// И только если есть чего говорить юзеру в случае ошибки
if (!element.getAttribute("check_message")) continue;
if (pattern = element.getAttribute("check_pattern")) { // если задан рег
pattern = new RegExp(pattern, "g");
if (!pattern.test(element.value)) {
document.getElementById('validationka').style.display = "block"
document.getElementById('validationka').innerHTML =element.getAttribute("check_message");
<!-- при нажатии на кнопку добавить, срабатывает валидация и перекидывает к валидации -->
window.scrollTo(0, 50);
element.focus();
return false;
}
} else if(/^\s*$/.test(element.value)) {// иначе просто проверка что поле не пустое
document.getElementById('validationka').style.display = "block"
document.getElementById('validationka').innerHTML = element.getAttribute("check_message");
<!-- при нажатии на кнопку добавить, срабатывает валидация и перекидывает к валидации -->
window.scrollTo(0, 50);
element.focus();
return false;
}
}
return true;
}
</script>
<form method="post" onSubmit="return checkForm(this)" id="addcom" action="/main/send">
<input type=text id="name" name="name" check_message="Введите имя, поле обязательно для заполнения" value="<?=$data['name']?>">
<input type=text id="email" name="email" check_message="Введите Email, поле обязательно для заполнения" value="<?=$data['email']?>">
<textarea name="comment" check_message="Введите текс комментария, поле обязательно для заполнения" rows="3"><?=$data['comment']?></textarea>
<div class="fullnewscapcha"><?=$captcha;?></div>
<input type="text" placeholder="Сюда" name="captcha" id="captcha">
<button type="submit" name="submit" id="submit" class="btn btn-primary">Добавить комментарий</button>
</form>
Вывод валидации:<div id="validationka"></div>
Вот акшион отправки// комментарий к новостям
public function action_send()
{
$uri = $this->request->referrer() != NULL ? $this->request->referrer() : '';
$data = $_POST;
if (Captcha::valid($data['captcha']))
{
ORM::factory('Review')->values($data)->create();
Session::instance()->set('message', array(
'class' => 'success',
'text' => 'Ваш комментарий будет добавлен после проверки'
));
Session::instance()->delete('data');
}
else
{
Session::instance()->set('message', array(
'class' => 'danger',
'text' => 'Не правильно ввели код с картинки'
));
Session::instance()->set('data', $data);
}
$this->request->redirect($uri);
}
в коде не понимаю, проверки там нет не какой, только на капчу, и выводит текста если сообщение отправлено и если ошибка то пишет что нужно ввести капчу, может можно как то подключить к данной форме js, или убрать форму и сделать прям файле где input и т.д, где сама форма. хотел на все поля проверку сделать.