2012-10-24 141 views
5

我想要此div顯示錶單驗證是否失敗。如果驗證失敗,則顯示div

<div class="alert"> 
    <strong>Warning!</strong> @Html.ValidationSummary(false, "Fix these errors:") 
</div> 

我試圖把它包裏面

if(! ViewData.ModelState.IsValid) 

,但在提交表單時,不顯示DIV。可能是因爲沒有發回應有的jquery驗證。驗證邏輯看起來不錯,如果我刪除if語句驗證摘要列表所有不正確的輸入字段。

如何根據驗證切換div的可見性?

回答

2

您可以應用這個簡單的腳本。這不是很複雜,但它應該訣竅

$(document).ready(function() { 
    $('.alert').hide(); //hides the div on page load 
    $('#submit').click(function() { //assumes your submit button has id="submit" 
     $('.alert').show(); //shows the div when submit is clicked 
    }); 
}); 

正如你所看到的,這實際上並不關心驗證。只需點擊提交按鈕,就可以看到'alert'div。如果有驗證錯誤,div會顯示您的警告。如果表單有效,我假設刷新或重定向,因此div永遠不會有機會顯示。

+0

您的解決方法具有正確的用戶體驗,因此我將其upvoted它。但是,這感覺就像我錯過了一些東西。誰希望在表單完成之前輸出錯誤信息「(修正這些錯誤)」。感覺像「@ Html.ValidationSummary」應該有一些切換可見性機制... – dbd

+0

是的。然而,如果你只是不把@ Html.ValidationSummary包裝在一個div中,它會隱藏自己,直到需要... –

+0

你確定嗎?當我開始驗證時,我通過它自己離開了@ Html.ValidationSummary',沒有div,文本'修復這些錯誤'是從一開始就有的。 – dbd

2

更新

我重寫了接受的答案。如果服務器連接速度較慢,則在服務器請求期間將顯示錯誤div。即使沒有錯誤。我改變它來檢查提交表單時表單是否有效。這段代碼假設你有一個表單。

$(document).ready(function() { 
    $(".alert").hide(); //hides the div on page load 

    $("form").submit(function() { 
     if (!$(this).valid()) { 
      $('.alert').show(); 
     } 
    });   
}); 
相關問題