2010-10-27 54 views
0

我正在嘗試在jQuery對話框中運行jQuery Validation插件。該代碼是這樣的document.ready功能:ASP.NET中的jQuery驗證插件上的jQuery UI對話框:可以工作嗎?

$("#Dialog").dialog({ 
    bgiframe: true, 
    autoOpen: false, 
    height: 600, 
    width: 590, 
    modal: true, 
    resizable: false, 
    open: function (type, data) { 
     $(this).parent().appendTo("#aspnetForm"); 
    }, 
    close: function() { } 
}); 

$("#aspnetForm").validate({ 
    rules: { 
     <%=txtCode.UniqueID %>: { 
      required: true 
     }, 
     <%=txtDescription.UniqueID %>: { 
      required: true 
     }, 
     <%=txtMallCode.UniqueID %>: { 
      required: true 
     } 
    }, messages: {} 
}); 

在pageLoad函數中,我有:

$(".Add").unbind(); 
$(".Add").click(function (e) { 
    e.preventDefault(); 
    var ctrl = GetPrefixSuffix($(this).attr('id'), 'btnAdd'); 

    $("#Dialog").dialog('option', 'buttons', 
    { 
     'Add': function() { 
      if ($("#aspnetForm").validate()) { 
       //Do some stuff 
       $(this).dialog('close'); 
      } 
     }, 
     'Cancel': function() { 
      $(this).dialog('close'); 
     } 
    }); 
    $("#Dialog").dialog('open'); 
}); 

我不能真正得到jQuery的對話框顯示出任何錯誤,但它已停止由有條件的並且不關閉對話框。我該如何解決它?

+0

所以是你的問題如何得到驗證插件展示錯誤,或者爲什麼調用驗證後對話框沒有關閉?或者是其他東西? – Ryley 2010-10-27 18:54:02

+0

它爲什麼不顯示錯誤。 – jlrolin 2010-10-27 23:30:12

+0

您可能會改變的另一件事是隻在您的輸入元素中指定'class =「required」',這樣您可以不帶任何參數調用'.validate()' – Ryley 2010-10-28 22:27:11

回答

1

看到這裏的工作示例:http://jsfiddle.net/ryleyb/HJFep/

主要變化 - 在您的添加功能,我改變了validate調用valid(見的差異驗證插件文件)。如果表單無效,我也會返回false。

我沒有特別明白,爲什麼你不得不爲你的對話框中打開功能:

open: function (type, data) { 
    $(this).parent().appendTo("#aspnetForm"); 
} 

所以我的回答只是忽略了......

+0

其實,我相信返回false是我缺少的鏈接。我之前使用過.Valid(),而且它實際上正確地擊中了我,但從未顯示驗證錯誤。我會試試這個並確認。 – jlrolin 2010-10-27 23:31:30

+0

是的,在這種情況下,如果您返回false,對話框將顯示錯誤。 – Ryley 2010-10-28 02:25:18