您好我正在使用MVC4進行客戶端驗證。這非常適合在字段旁邊顯示驗證消息。'實時'更新驗證摘要
我添加了一個驗證摘要:
@Html.ValidationSummary(false)
這工作,客戶端「東經所有。儘管如此,我希望它有不同的表現。目前僅當點擊提交按鈕時,驗證摘要中的消息纔會改變。我希望它們是動態的,以與每個字段的驗證消息類似的方式填充。
有人可以提出一種方法來實現這一目標嗎?
任何觸發摘要更新的信息都會很棒。
您好我正在使用MVC4進行客戶端驗證。這非常適合在字段旁邊顯示驗證消息。'實時'更新驗證摘要
我添加了一個驗證摘要:
@Html.ValidationSummary(false)
這工作,客戶端「東經所有。儘管如此,我希望它有不同的表現。目前僅當點擊提交按鈕時,驗證摘要中的消息纔會改變。我希望它們是動態的,以與每個字段的驗證消息類似的方式填充。
有人可以提出一種方法來實現這一目標嗎?
任何觸發摘要更新的信息都會很棒。
我已經設置了驗證摘要中「實時」更新還考慮以下幾點:
開始提取驗證,overrride showErrors(),並實現我們的邏輯:
var validator = $('form').data('validator');
validator.settings.showErrors = function (map, errors) {
this.defaultShowErrors();
if ($('div[data-valmsg-summary=true] li:visible').length) {
this.checkForm();
if (this.errorList.length)
$(this.currentForm).triggerHandler("invalid-form", [this]);
else
$(this.currentForm).resetSummary();
}
}
由於我使用這種解決方案我的整個網站,我創建了下面的init(onready):
$('form').each(function() {
var validator = $(this).data('validator');
if (validator) {
validator.settings.showErrors = function (map, errors) {
this.defaultShowErrors();
if ($('div[data-valmsg-summary=true] li:visible').length) {
this.checkForm();
if (this.errorList.length)
$(this.currentForm).triggerHandler("invalid-form", [this]);
else
$(this.currentForm).resetSummary();
}
};
}
});
下面是上面所用的resetSummary:
jQuery.fn.resetSummary = function() {
var form = this.is('form') ? this : this.closest('form');
form.find("[data-valmsg-summary=true]")
.removeClass("validation-summary-errors")
.addClass("validation-summary-valid")
.find("ul")
.empty();
return this;
};
工作得很好,只是它在第一個錯誤發生時不再顯示摘要。我認爲這可以算作答案,謝謝。 – nixon
當然,如果您總是希望總結更新,您可以排除if($('div [data-valmsg-summary = true] li:visible')。length)。 –
但是如果你希望更新在提交之後進入並保持更新,即使一切都有效,我認爲我們需要保持該狀態。例如。 '$('form')。data('updateSummary',true);' –
客戶端摘要似乎是在整個表單被驗證時生成的,您可以通過調用valid()插件方法自己做到這一點。在jQuery驗證腳本之後添加這個。
<script>
$(function() {
$(':input').on("keyup click", function() {
$('form').valid();
});
});
</script>
我所包含的示例事件是keyup和click,但是您可以添加或從此空間分隔列表中刪除。
或者更好的,你可以在$('form')上進行操作on('change',function(e){$(this).valid );}); –
是不是比寫一堆代碼更容易?那麼爲什麼選票較少呢? – Prageeth
「目前的消息在驗證摘要中只有當點擊提交按鈕時纔會改變。「請創建一個小提琴/演示,以便我們可以看到發生了什麼。 – Mori
如果你添加一個驗證摘要到任何表單,你應該看到結果 – nixon