Проверка формы jQuery с динамически генерируемыми формами - PullRequest
1 голос
/ 09 августа 2011

У меня есть страница с несколькими формами, которые динамически генерируются с использованием PHP.Я проверяю их с помощью плагина jQuery Validation.Все формы одинаковы, но относятся к разным элементам, поэтому я дал всем формам один и тот же класс, чтобы они могли быть проверены одной функцией (каждая форма также имеет уникальный идентификатор).Но у меня возникли некоторые проблемы:

  1. Я бы хотел, чтобы сообщения об ошибках отображались в правильных элементах формы, но если я просто использую класс формы, валидатор не будет знать, какая формаэлемент от.
  2. У меня есть гиперссылка для отправки формы (и обычная кнопка submit в тегах <noscript>), и я обычно использую jQuery для отправки формы, но опять же, как будет работать jQueryзнаете, какую ссылку для отправки я щелкнул, и какую форму для отправки?

Самая простая вещь, о которой я могу подумать - это передать идентификатор формы проверяющему как-то.Возможно ли это?

Формы выглядят так:

<?php while($row= pg_fetch_row($groups)) {  ?>
<p class="error" id="error-<?php echo $row[0] ?>"></p>
<form action="../scripts/php/groups-process.php" method="post" id="editgroup-<?php echo $row[0] ?>" class="editgroup">
    <label for ="edit-<?php echo $row[0] ?>" >Edit group name:</label>
    <input type="text" class="text" size="20" maxlength="30" name="edit" id="edit-<?php echo $row[0] ?>" value="<?php echo $row[1] ?>" />
    <noscript><input type="submit" name="editgroup" value="Submit" /></noscript>
    <div id="submitcontainer-<?php echo $row[0] ?>"></div>
</form>
<?php } ?>

Обычно я проверяю форму следующим образом:

$(document).ready(function(){
    $("#editgroup").validate({
        rules: {edit: {required: true, maxlength: 30}},
        messages: {edit: {required: 'Please enter a group name', maxlength: 'Please enter a shorter group name'},
        errorContainer: "p#error",
    });
    $("#submitcontainer").html('<a class="button" href="javascript:void();" id="submitlink" name="submit">Submit</a>');
    $("#submitlink").click(function() {
        $("#editgroup").submit();
    });
});

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

В итоге я дважды повторил свой результат, поэтому динамически создаю валидатор формы для каждой формы, а затем динамически создаю формы. Это был лучший способ, который я мог придумать, чтобы дать мне нужный контроль, хотя, очевидно, он медленнее и производит больше кода - не идеальное решение, но он подойдет для этой ситуации.

0 голосов
/ 09 августа 2011

дать один и тот же класс для всех форм, чем попробовать это,

    <form id="1" class="common" method="post" action="page.php">
    <input type="text" class="common_input_class" size="20" maxlength="30" name="edit" id="whatever" value="whatever" />
    <input type="submit" name="submit" class="submit_this_form" value="submit" />
    </form>

    <form id="2" class="common" method="post" action="page.php">
         <input type="text" class="common_input_class" size="20" maxlength="30" name="edit" id="whatever" value="another value" />
          <input type="submit" name="submit" class="submit_this_form" value="submit" />
    </form>

    <script type="text/javascript">
         $(".common").submit(function(){
       var form_id = $(this).attr('id');
       var input_val = $(this).children('.common_input_class').val();
       if (input_val == '')
       {
        alert("input field is required");
        return false;
       }
});
   </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...