Javascript I';我试图用jquery验证突出显示我的输入

Javascript I';我试图用jquery验证突出显示我的输入,javascript,jquery,asp.net-mvc,jquery-validate,unobtrusive-validation,Javascript,Jquery,Asp.net Mvc,Jquery Validate,Unobtrusive Validation,我在mvc工作。 我的看法是: @using (Html.BeginForm("CreatePost", "Posts", FormMethod.Post, new { @enctype = "multipart/form-data", @id = "save-post-form" })) { <div class="row"> <div class="col-xs-5" id="post-details-div"> <div class="

我在mvc工作。 我的看法是:

@using (Html.BeginForm("CreatePost", "Posts", FormMethod.Post, new { @enctype = "multipart/form-data", @id = "save-post-form" }))
{
<div class="row">
    <div class="col-xs-5" id="post-details-div">
        <div class="form-group">
            <label>Post Title</label>
            @Html.TextBoxFor(m => m.Title, new { @class = "form-control", @autocomplete = "off" })
            @Html.ValidationMessageFor(m => m.Title, null, new { @class = "text-danger" })
        </div>

        <div class="form-group">
            <label>Post Description</label>
            @Html.TextAreaFor(m => m.Description, new { @class = "form-control", @autocomplete = "off" })
            @Html.ValidationMessageFor(m => m.Description, null, new { @class = "text-danger" })
        </div>

        <div class="form-group">
            <label>Post Cover Picture</label>
            @Html.TextBoxFor(m => m.PostCoverFile, new { @type = "file" })
            @Html.ValidationMessageFor(m => m.PostCoverFile, null, new { @class = "text-danger" })
        </div>
    </div>

    <div id="post-content-div">
        <label>Content</label>
        <div class="form-group">
            @Html.TextAreaFor(m => m.Content)
            @Html.ValidationMessageFor(m => m.Content, null, new { @class = "text-danger" })
        </div>
    </div>
</div>
}

@section scripts{

<script>
    require(["createPost"], function (module) {
        $("#navbar-links").find("li[data-name='posts']").addClass('active');
        module.load();

    });
</script>
}
什么都没发生,我也不知道怎么了。。。 请帮帮我。验证工作正常,但高亮显示不会触发

验证工作正常,但高亮显示不会触发

这是因为您已经在使用不引人注目的验证插件作为ASP的一部分。因此,不引人注目的验证会自动构造并调用
.validate()
方法。这意味着您的
.validate()
实例总是被忽略。(根据jQuery Validate的设计,
.Validate()
方法只能调用一次,作为插件在表单上的初始化,任何后续调用都将被忽略。)

换句话说,在表单上调用
.validate()
(初始化插件)后,选项将被锁定,无法通过再次调用
.validate()
动态更改

您有两个选项可以覆盖默认的
高亮显示
取消高亮显示

  • 从项目中删除
    不引人注目的验证
    插件,并根据需要构造
    .validate()
    方法。给你完全的控制,但FWIW,你不会得到“不引人注目”的功能和好处的不引人注目的验证插件

  • 将您的
    高亮显示
    取消高亮显示
    选项放在其中,然后确保此方法在
    不引人注目的调用.validate()之前的某个地方。要实现这一点,您可能必须确保
    .setDefaults()
    不在任何DOM就绪事件处理程序中。请记住,您在
    .setDefaults()
    中放置的任何内容都会影响页面上的所有表单

  • 请在此处阅读更多信息:


    这里(请参见编辑2和评论部分):

    下面覆盖的CSS对我很有用。认为这对那些需要快速修复的人会有帮助

    .field-validation-error {
        color: #ff0000;
    }
    
    
    .field-validation-valid {
        display: none;
    }
    
    .input-validation-error {
        border: 1px solid #ff0000;
        background-color: #ffeeee;
    }
    
    .valid {
    
    }
    

    @安德烈布,不客气。如果这个答案解决了问题,请“接受”。@AndreiB,单击我答案旁边左上角的复选标记。谢谢
    .field-validation-error {
        color: #ff0000;
    }
    
    
    .field-validation-valid {
        display: none;
    }
    
    .input-validation-error {
        border: 1px solid #ff0000;
        background-color: #ffeeee;
    }
    
    .valid {
    
    }