2011-06-03 99 views
6

我目前在我的網頁上的一個燈箱框架中有一個窗體。當用戶提交包含無效數據的表單時,div窗口頂部會出現一個表單錯誤列表。問題是:我需要某種jQuery驗證回調來在出現錯誤div後調整燈箱大小。據我所知,沒有辦法與jQuery的燈箱做到這一點。jQuery驗證回調函數

+0

你的意思一個lightbox iframe?您是使用插件還是自己的腳本驗證表單? – Jon 2011-06-03 08:29:24

回答

17

您提供無效的回調函數,你可以找到documented here,像這樣

$(".selector").validate({ 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
      //resize code goes here 
     } 
    } 
}) 
+0

我想我沒有想到在invalidHandler函數中處理所有的錯誤顯示和放置。謝謝! – 2011-06-10 17:14:04

+0

歡迎您的幫助 – mcgrailm 2011-06-10 17:16:12

+0

在'.validate'已被初始化/調用後,您如何附加此處理程序? – Maslow 2013-04-27 16:45:58

2

或者,你可以使用errorPlacement回調函數,以行動驗證失敗的特定元素上。作爲一個例子,下面的代碼使用errorPlacement回調類中的每個無效的表單元素的父div標籤的設置爲「錯誤」,然後刪除「錯誤」類一旦元素通過驗證:

form.validate({ 
     rules: { 
      Name: { 
       required: true 
      }, 
      Email: { 
       required: true 
       , regex: "^[0-9a-zA-Z.+_\-][email protected]{1}[0-9a-zA-Z.+_\-]+\\.+[a-zA-Z]{2,4}$" 
      } 
     }, 
     messages: { 
      Name: { 
       required: "Please give us your name" 
      }, 
      Email: { 
       regex: "Please enter a valid email address" 
      } 
     }, 

     errorPlacement: function(error, element) { 
      element.parent().addClass("error"); 
     }, 

     success: function(element) { 
      $("#" + element.attr("for")).parent().removeClass("error"); 
     } 
    });