Javascript更改后输入仍然无效

时间:2014-01-27 20:48:09

标签: jquery html asp.net-mvc validation

我的表单有一个自动填充button,用一些inputs填充默认信息。但是,填充字段不会清除已存在的任何验证消息,除非用户手动点击或标记元素。即使消息存在,表单仍将提交。这是填充的JavaScript。

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

有人建议在我的点击功能中添加$("form").validate().resetForm();,但这对我不起作用。验证消息仍然存在。这是我的观点的相关部分。

<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>

如何在不重置整个表单的情况下仅重置验证消息?

1 个答案:

答案 0 :(得分: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并清空它。

希望这有帮助