2012-06-11 82 views
0

我完全準備承認我錯過了一些簡單的東西。我發現jquery文檔頁面上的文檔並不包含進行基本自定義驗證所需的全部信息。我的jquery驗證方法沒有被觸發表單提交

我的問題是我需要驗證一個元素中沒有包含的數據,所以我一直在使用一種'dummy'元素來嘗試觸發我的自定義方法。

<div id="modal-dialog-overlay"> 
<div id="modal-background"></div> 
<article id="dialog-form" class="event-module module"> 
    <header> 
     <h6>New Event</h6> 
     <section class="module-actions"> 
      <span class="button" onclick="overlay_select('modal-dialog-overlay', true);">Cancel</span> 
      <span class="primary button" onclick="createBEvent()">Create Event</span> 
     </section> 
    </header> 
    <section class="wrapper"> 
     @using (Html.BeginForm("CreateEvent", "Conversations", FormMethod.Post, new { enctype = "multipart/form-data", id = "createEventForm", @class = "group" })) 
     { 
      <input id="participantsChecker" type="text" /> 
      <input class="submit" type="submit" value="Submit"/> 
     } 
    </section> 
</article> 
</div> 
</div> 

然後的JavaScript位

$.validator.addMethod("checkParticipants", function (value, element) { 
     alert($(".event-module .contact-handle [name='Key']").length); 
     return $(".event-module .contact-handle [name='Key']").length 
    }, "You need to invite at least one person."); 
    $("#createEventForm").validate({ 
     rules: { 
      participantsChecker: { 
       checkParticipants: true 
      } 
     } 
    }); 

這是在document.onready的頁面。 頁面上還有其他代碼添加了該選擇器正在查找的元素,這些代碼絕對存在。無論如何,提交表單時都不會出現該警報。我只是通過提交而不用輸入任何內容來測試它。

回答

1

輸入元素必須有一個名字,這就是jQuery驗證如何與他們互動:

<input id="participantsChecker" name="participantsChecker" type="text" /> 

這應該工作。

+0

原來,它仍然沒有與此工作。不知道接下來要嘗試什麼。我實際上把debug:true選項放在它上面,這也沒有做任何事情,所以看起來.validate根本就沒有做任何事情。 –

+0

據我可以看到,它應該工作 - 我已經創建了一個例子:http://jsfiddle.net/ryleyb/fxTtP/ ...可能有代碼中的其他錯誤,可能不是什麼你已經在這裏展示了...... – Ryley

+0

是的,可能是,我檢查了一些Chrome開發工具中的一些東西,並且在我們的jquery.min.js中彈出一些錯誤,這聽起來像是一個問題。我會找出一個。 –