2011-09-06 92 views
3

根本無法理解這一點。 使用validate插件(1.8.1)驗證jQuery(1.6.2)。 有以下invalidHandler代碼,如果單擊提交按鈕,它可以在所有瀏覽器中正常工作。 但是,如果在填寫Firefox中的任何字段(反正版本5和6)之後按下鍵盤上的回車鍵提交表單,則會收到關於錯誤數量的警報,但表單仍然會提交! 表單未在其他瀏覽器中提交,並且如果刪除了警報行,則它在Firefox中正常工作。但是我們需要警報,所以如果任何人有任何想法如何解決這個問題,它將是大大讚賞 - 我不習慣在Firefox中行事! :)jQuery驗證invalidHandler警報仍然在Firefox中提交?

invalidHandler: function(form, validator) { 
      var errors = validator.numberOfInvalids(); 
      if (errors) 
      { 
        var message = (errors == 1) 
        ? '1 field has an error. It has been highlighted' 
        : errors + ' fields have errors. They have been highlighted'; 
        alert(message); 
        //return false; 
      } 

}

回答

0

您是否嘗試過在取消了return false

JQuery documentation表明false會:

...由事件 對象上調用.preventDefault()或者從我們的處理程序返回false取消提交操作。

+0

是的JW - 抱歉忘了提及我只是在調試中添加了返回false位。 – Tidy

0

我也有過這個問題。 認爲正在進行的是alert()的調用阻止了invalidHandler函數的執行,這打破了jQuery.validate正常運行的方式。

你可以做的是通過setTimeout調用,這不會阻止你invalidHandler代碼執行啓動一個警告窗口:

setTimeout('alert("'+message+'")', 1) 

哈克,但作品!