Как вы проверяете форму с несколькими div, используя плагин jQuery Validate? - PullRequest
2 голосов
/ 27 июня 2009

Я использую плагин jQuery Validation , и у меня есть проблема с проверкой элементов, которые находятся во вложенных элементах div в моей форме:

   <form id="form1" runat="server">
    <div id="theForm">
        html <input type="text" class="required date"/>
        <br />
        aspx <asp:TextBox runat="server" CssClass="required" ID="txtone"></asp:TextBox>
        <br />        
        <div id="subArea"><input type="text" class="required" /></div>    
    </div>
    <asp:Button runat="server" ID="btnSub" Text="Save"  
            onclick="btnSub_Click"/>
    </form>

и мои настройки с помощью jQuery:

<script type="text/javascript">
  $( document ).ready( function ()
            {                       
                $('#<%= Form.ClientID %>').validate();
            }
        );

        alert('<%= Form.ClientID %>');
    </script>

Конечным результатом является то, что первые два поля работают как положено, но поле ввода в doe нет. Должен ли я сделать что-то особенное с селекторами или добавить поле специально? Кроме того, если бы мне пришлось динамически добавлять поля в dom, как я могу снова прикрепить функцию validate () к форме, чтобы я включил новые динамические поля ввода?

решаемые

Многие SO Cred обращаются к Богу Рока tvanfosson за указанием на то, что входным тегам не хватает атрибутов id и name. Как только я добавил их, валидатор сработал. ДОПОЛНИТЕЛЬНО круто, что если у вас есть шаблон на стороне клиента, там также работает techinque:

<script type="text/html" id="template">
        <# 
            var i;       

            for(i=0; i < 2; i++)
            {
                var id="tryit" + i;
        #>
            field: <#= id #> <input type="text" class="required" id="<#= id #>" name="<#= id #>"/>
            <br/>
        <#
            }           
        #>
    </script>

<form id="form1" runat="server">
    <div id="theForm">
        html <input type="text" class="required date" id="htmlText" name="htmlText"/>
        <br />
        aspx <asp:TextBox runat="server" CssClass="required" ID="txtone" name="txtone"></asp:TextBox>
        <br />        
        <div id="subArea"><input type="text" class="required" id="subOne" name="subone"/></div>      
        <div id="newArea"></div>  
    </div>
    <asp:Button runat="server" ID="btnSub" Text="Save"  
            onclick="btnSub_Click"/>
    </form>
    <script type="text/javascript">
        $( document ).ready( function ()
            {   
                var newHTML = parseTemplate($('#template').html(), {"one" : "one"});                
                $('#newArea').html(newHTML);

                $('#<%= Form.ClientID %>').validate();              
            }
        );          

    </script>

1 Ответ

4 голосов
/ 27 июня 2009

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

 <input type="text" id="date" name="date" class="required date" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...