2014-01-27 49 views
3

我的表單有一個自動填充button,它使用默認信息填充inputs。但是,填充字段並不會清除已存在的任何驗證消息,除非用戶手動點擊或選中元素。即使消息存在,表單仍然會提交。這裏是填充的JavaScript。輸入通過Javascript更改後保持無效

$('#autofillButton').click(function() { 
    $('#address').val("localhost"); 
    $('#port').val("12345"); 
    $('#receiveTimeout').val("5000"); 
    $('#sendtimeout').val("5000"); 
}) 

有人建議增加$("form").validate().resetForm();我點擊功能,但沒有爲我工作。驗證消息仍然存在。這是我的View的一個相關部分。

<p> 
    @Html.LabelFor(c => c.address): 
    @Html.TextBoxFor(c => c.address) 
    @Html.ValidationMessageFor(c => c.address, String.Empty, new { @class ="errorMessage"}) 
</p> 
<p> 
    @Html.LabelFor(c => c.port): 
    @Html.TextBoxFor(c => c.port) 
    @Html.ValidationMessageFor(c => c.port, String.Empty, new { @class ="errorMessage"}) 
</p> 

如何在不重置整個表單的情況下僅重置驗證消息?

回答

2

一個簡單,可重複使用的 jQuery的功能,您可以在調用任何 jQuery對象:

$.fn.clearErrors = function() { 
    $(this).each(function() { 
     $(this).find(".field-validation-error").empty(); 
     $(this).trigger('reset.unobtrusiveValidation'); 
    }); 
}; 

用法:

question.clearErrors(); 

選項2:

您可以查看HTML代碼在瀏覽器中生成,然後通過jquery將其清空,例如空()

要找到生成的代碼:

正常回傳:查看頁面上的「源代碼」在瀏覽器中查找錯誤消息。找到父div來清空它。

Ajax調用:右鍵單擊並檢查Chrome中的元素(其他現代瀏覽器稱它們不同,但它們應該有該工具)。這會給你在當前狀態下生成的html(在ajax調用之後)。找到父div並將其清空。

希望這有助於

+0

在這裏發現了類似的解決方案:http://stackoverflow.com/questions/5457393/reset-mvc-form-with-jquery午餐後 –

+0

會接受的。 +1,以便推薦我瀏覽器中生成的代碼。我在學習MVC時陷入困境,忘記了我能做到這一點。 – Rainbolt

+0

哈哈我明白了。請記住,沒有「魔術師」! –