Проверка Jquery для container.validate () вместо form.validate () - PullRequest
2 голосов
/ 28 октября 2011

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

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

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

Что мы хотим сделать, этодобавьте тег формы с 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>

Ответы [ 3 ]

1 голос
/ 29 октября 2011

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

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

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

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

EDIT:

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

<form id="regForm" action="#"> </form>
0 голосов
/ 11 июля 2015

Это поздний ответ, но, учитывая, что ни один из существующих ответов не был принят, вот мое мнение об этом.Я просто столкнулся с подобной ситуацией, когда мне нужно было проверить 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() && 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>
0 голосов
/ 29 октября 2011

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

...