Проверка Jquery в container.validate() вместо form.validate()

#jquery #umbraco #jquery-validate

#jquery #umbraco #jquery-проверка

Вопрос:

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

Поскольку каждый пользовательский элемент управления (макрос) содержит теги сервера, мы должны использовать одну форму в каждом пользовательском элементе управления, чтобы заставить проверку jQuery работать.

Но поскольку мы используем одну форму в каждом пользовательском элементе управления, мы не можем добавить несколько элементов управления на страницу.

Что мы хотим сделать, это добавить тег формы с runat=»server» на главную страницу, а затем выполнить всю проверку с помощью некоторого container.validate(); вместо form.validate() .

т.е. что-то вроде этого

 <script type="text/javascript>

    $('#regForm').validate();

</script>


<div id="regForm">

  <input type="text" class="required" name="Name" id="txtName" runat="server"/>

</div>
 

Комментарии:

1. @Sparky672: я хочу выполнить проверку в каком-либо container.validate() вместо form.validate();

2. Итак, вопрос в том, что? Вы можете это сделать? Ответ отрицательный … ему нужны поля, которые должны быть в пределах <form> . Смотрите мой ответ ниже.

Ответ №1:

Плагину проверки необходимо, чтобы различные поля, которые он будет проверять, содержались в наборе <form></form> тегов.

http://rocketsquared.com/wiki/Plugins/Validation

Однако вы можете выполнить проверку без необходимости «отправлять» форму. Это все еще может быть достигнуто с onkeyup: onfocusout: помощью обработчиков or для примера.

Итак, если вы можете просто изменить свой <div id="regForm"> на что-то вроде <form id="regForm" ... > , вы сможете выполнить проверку.

Редактировать:

Для HTML 4 единственным обязательным form атрибутом является action , поэтому нет причин, по которым вы не можете просто заменить свой <div id="regForm"> </div> на this …

 <form id="regForm" action="#"> </form>
 

Комментарии:

1. да, это я знаю .. но мы ищем метод для проверки в div.validate(), чтобы избежать нескольких форм на странице. спасибо за ваш ответ.

2. @махеш, я полностью понял ваш вопрос, но ответ остается тем же… Валидатору требуется <form> .

3. @махеш, нет причин избегать нескольких <forms> на странице. Смотрите мое редактирование и ответ @Gary.S

4. Но все используемые здесь формы имеют runat=»server», но мы не можем добавить несколько форм с runat=»server» на страницу. Также, если мы добавим форму с runat=»server» в masterpage, все остальные формы будут находиться внутри этой формы, и я думаю, что этот тип вложенности противоречит правилам html

5. @махеш, другого способа заставить валидатор работать без формы нет. Я предоставил единственно возможное решение.

Ответ №2:

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

 <script type="text/javascript>
  jQuery(function($) {
    $('form').validate();

    $('.continue').click(function() {
        var isValid = true;
        var $div = $(this).closest("div");
        $div.find(":input").each( function() {
           isValid = $(this).valid() amp;amp; isValid;
        });
        if ( isValid ) {
           var $next = $div.hide().next('div');
           if ( $next.length == 0 ) {
              $(form).submit();
           } else {
              $next.show();
           }
        }
    });
  });
</script>

<form action="#">
    <div id="div1">
       <input type="text" required name="Name" id="txtName"        runat="server"/>
       <button class="continue">Continue</button>
    </div>
    <div id="div2">
       <input type="text" required name="Address" id="txtAddress" runat="server"/>
       <input type="text" required name="City" id="txtCity" runat="server"/>
       <input type="text" required name="State" id="txtState" runat="server"/>
       <input type="text" required name="Zip" id="txtZip" runat="server"/>
       <button class="continue">Continue</button>
    </div>
</form>
 

Ответ №3:

По умолчанию asp.net может иметь только одну форму с runat=»server». Однако у вас может быть несколько форм на странице, как показывает ответ Спарки. Больше информации о нескольких формах в asp.net можно найти здесь: http://msdn.microsoft.com/en-us/magazine/cc164151.aspx .

Комментарии:

1. Но все используемые здесь формы имеют runat=»server», но мы не можем добавить несколько форм с runat=»server» на страницу. Также, если мы добавим форму с runat=»server» в masterpage, все остальные формы будут находиться внутри этой формы, и я думаю, что этот тип вложенности противоречит правилам html

2. @махеш, прочтите ссылку, размещенную в этом ответе. В нем рассказывается, как разместить несколько форм на странице. Другого способа заставить валидатор работать нет.