Concrete5-8.2.1 php jQuery конфликт нескольких форм проверки

У меня есть несколько форм на странице (количество может варьироваться в зависимости от пользователя, сколько блоков форм они добавляют на страницу). Есть 2 файла проверки формы: view.js — это сторона пользователя, и controller.php — это сторона сервера. Форма находится в view.php.

Я могу добавить уникальные идентификаторы блоков для каждой формы и поля из контроллера. Идентификатор меняется каждый раз, когда размещается новый блок. Таким образом, ничто не может быть доступно напрямую, как, например, $ (‘# name123’).

Проблемы:

  1. Как jQuery может узнать, какую из форм необходимо обработать? как узнать, какая из кнопок отправки была нажата, если до этого номер ID неизвестен?

  2. Даже если я выясню, какую форму пытались отправить, как jQuery может обработать уникальный идентификатор блока, сгенерированный контроллером? То есть, если у меня, скажем, есть 3 формы на странице, как jQuery может узнать, какой элемент ввода дал сигнал (например, размытие)?

Спасибо.

некоторый код view.php:

<form id="contact_form<?php echo $bUID; ?>"enctype="multipart/form-data"action="<?php echo $formAction?>"method="post"accept-charset="utf-8">

<h2><?php echo $form_title; ?></h2>
<h2><?php echo $bUID; ?></h2>
<!--<input type="hidden" name="bUID" data-buid="<?php echo $bUID; ?>">-->

<div class="form-group">
<?php
echo $form->label('name', $entry_name);
echo $form->text('name'.$bUID, $name, array ('maxlength'=>"50", 'required'=>"required", 'data-buid'=>$bUID));
echo '<div id="tip-name'.$bUID.'" class="tip-name tip">' . $entry_name_tip . '</div>';
echo '<div id="error-name'.$bUID.'" class="error-name tip hidden">' . $error_name . '</div>';
?>
</div>

некоторый код view.js:

$(document).ready(function(e) {
var bUID;

$('form').submit(function(event){
bUID = $(this).data("buid");
event.preventDefault();
submitForm(bUID);
});

$('input[type=text]').blur(function() {
bUID = $(this).data("buid");
if (!$('#name'+bUID).val() || $('#name'+bUID).val().length < 2 || $('#name'+bUID).val().length > 60) {
$('#error-name'+bUID).removeClass("hidden");
$('#tip-name'+bUID).addClass("hidden");
$('#name'+bUID).addClass("problem");
return false;
}
else {
$('#error-name'+bUID).addClass("hidden");
$('#tip-name'+bUID).removeClass("hidden");
$('#name'+bUID).removeClass("problem");
return true;
}
});

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector