2011-10-28 51 views
2

我們正在構建一個新的umbraco網站,其中包含許多註冊表單,我們正在使用jquery驗證插件來驗證這些表單。jquery驗證container.validate()而不是form.validate()

由於每個用戶控件(宏)都包含服務器標籤,我們必須在每個用戶控件中使用一個表單來使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> 
+0

那麼你的問題是什麼? – Sparky

+0

@ Sparky672:我想要的是對一些container.validate()而不是form.validate()進行驗證; –

+0

所以問題是什麼?你可以做到嗎?答案是否定的......它需要這些字段在'

'內。請參閱下面的答案。 – Sparky

回答

1

的驗證插件需要,這將是確認被包含一套<form></form>標籤中的各個領域。

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

但是,你可以做驗證,而不必「提交」的形式。例如,使用onkeyup:onfocusout:處理程序仍可以實現此功能。

因此,如果您只需將<div id="regForm">更改爲<form id="regForm" ... >之類的東西,就可以進行驗證。

編輯:

For HTML 4,唯一需要的form屬性爲action,所以沒有理由你不能只是取代你<div id="regForm"> </div>這... ...

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

是的,我知道..但我們正在尋找一種方法來驗證div.validate(),因爲爲了避免頁面中的多個表單。感謝您的回答。 –

+0

@mahesh,我完全理解你的問題,但答案保持不變......驗證器需要一個''。 – Sparky

+0

@mahesh,在頁面上沒有理由避免多個''。看到我的編輯並通過@ Gary.S回答 – Sparky

0

默認asp.net只能有一個runat =「server」的表單。 Sparky的答案顯示,您可以在頁面上使用多種形式。有關asp.net中多種形式的更多信息,請訪問:http://msdn.microsoft.com/en-us/magazine/cc164151.aspx

+0

但是這裏使用的所有表單都是runat =「server」,但我們不能在頁面中使用runat =「server」添加多個表單。另外,如果我們在主頁面中添加一個包含runat =「server」的表單,所有其他表單將會進入這個表單,並且我認爲這種類型的嵌套是違反html規則的 –

+0

@mahesh,請閱讀此答案中發佈的鏈接。它告訴你如何在頁面上放置多個表單。沒有其他的方法可以讓Validator工作。 – Sparky

0

這是一個遲到的答案,但看到沒有任何現有的答案被接受,這裏是我承擔這一點。我只是遇到了類似的情況,我需要驗證模式對話框中包含的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>