2013-03-28 24 views
1

我使用的JQuery驗證插件。我發現只有在部署我的網站後纔會出現問題,即使這樣也會出現間歇性問題。當我提交表單與無效字段可以防止提交但沒有無效字段的顯示錶明它們是無效的消息。如果我將光標放在字段中,然後出現驗證消息。它也似乎是採取屏幕捕獲更新顯示並導致消息出現。該問題發生在多個字段類型上,但以下是一個示例。Jquery驗證插件。消息不可見,直到字段失去焦點

<input name="ProjectDescription" class="required" id="ProjectDescription" style="text-transform: uppercase;" type="text" maxLength="15" value=""/> 

這是我的驗證呼叫。

 $('#RequestForm').validate({ 
     ignore: ":hidden", 
     ignoreTitle: true, 
     submitHandler: function() { 
      var f = $('#RequestForm'); 
      var action = '/Request/Request' 
      var serializedForm = f.serialize(); 
      $.post(action, serializedForm, 
       function (rtn) { 
        $("#Submit").removeAttr('disabled'); 
        if (rtn.Success == true) { 
         var data = rtn.Result; 
         $('form')[0].reset(); 
         $.jGrowl("Submitted Successfully", { life: 10000 }); 
        } 
        else { 
         $.jGrowl(rtn.ErrorMessage, { sticky: true }); 
        } 
       }); 
      $("#Submit").attr('disabled', 'disabled'); 
      return false; 
     }, 
     invalidHandler: function (event, validator) { 
      debugger 
      console.log(validator); 
     } 
    }); 

我的按鈕處理

$('#Submit').click(function() { 
     $('#RequestForm').submit(); 

    }); 

我已經無法在小提琴或其他地方複製這個問題。在編寫此請求的過程中,它會再次停止發生,但我沒有做任何代碼更改。任何可能導致這種行爲的幫助將不勝感激。我在IE 9測試主要

更新:

我一直無法找到任何方式複製可靠的問題,但會繼續努力,如果我可以創造一個小提琴。在同一瀏覽會話期間,它會突然開始工作。通常,我可以通過關閉並重新打開瀏覽器來獲得另外3-4次嘗試的行爲。基於我試過的模糊評論和隱藏/顯示的評論。這些都不會導致錯誤消息出現。按下打印屏幕按鈕或將光標放在字段中並可靠地按下選項卡,將顯示驗證消息。關於解決方案的一些附加信息:

該頁面由MVC 3生成。 我使用javascript和ajax來顯示/隱藏字段。
字段的顯示/隱藏是發生在Ajax回調。

這一特定領域正在顯示/由

     if (project.PAContractClassID == "CAPITAL") { // capital 
          $('.capitalOnly').show(); 
          $('.expenseOnly').hide(); 
         } 
         else if (project.PAContractClassID == "EXPENSE") { // expense 
          $('.expenseOnly').show(); 
          $('.capitalOnly').hide(); 
         } 

我的代碼隱藏從MVC生成場

@Html.TextBoxFor(m => m.ProjectDescription, new { @name="ProjectDescription", @class = "required", maxlength = "15", style = "text-transform:uppercase;" })   
+0

如果它是間歇性的,那麼我真的不知道有人能幫助你。我們必須看到這個問題才能解決問題。任何人都會隨機發布猜測和建議作爲答案,這也不太合適。同時顯示更多的HTML代碼......足以構建一個簡潔的示例。 'form'標籤和你的'submit'按鈕? – Sparky

+0

我會在這裏提出一些建議。當你在'.validate()'而不是內聯HTML中聲明你的規則時會發生什麼?此外,請嘗試將'maxLength'的拼寫更改爲'maxlength'。 – Sparky

+0

如果'submit'按鈕包含在'

'內,那麼絕對不需要提供'click'處理函數來提交表單。 – Sparky

回答

0

多的測試之後,我隔離的基準,以jquery.unobtrusive阿賈克斯那是在我的_Layout.cshtml與JQuery驗證的行爲干擾。取出參考jquery.unobtrusive阿賈克斯之後,我再也沒有得到錯誤。我將繼續做一些測試,看看如果我添加這些引用的順序有差別,但我不想離開回答此問題。感謝大家的建議。

0

同上斯帕克:如果您的提交按鈕包含在<form></form>內,則有絕對不需要提供點擊處理函數來提交表單。

如果您不是使用提交按鈕,而只是使用type=button,請嘗試使用type=submit並查看問題是否消失。

相關問題