表单中的Javascript验证

表单中的Javascript验证,javascript,jquery,asp.net-mvc,jquery-validate,asp.net-mvc-5,Javascript,Jquery,Asp.net Mvc,Jquery Validate,Asp.net Mvc 5,我想弄明白这一点已经很久了。 JavaScript会被调用,但不会调用错误消息。 它始终显示为无错误,即使它应该调用错误消息。 所有字段都显示为绿色 我是个新手,所以尽可能多地用谷歌搜索。我为某些地方的贫民区代码样式提前道歉:) @节页脚{ Javascript: $(“文档”).ready(函数() { $(“#表单管理”)。验证({ 规则:{ 密码现在:{ 必填项:true }, 密码:{ 要求:正确, 最小长度:3, 最大长度:20 }, 密码确认:{ 要求:正确, 最小长度:3, 最大长

我想弄明白这一点已经很久了。 JavaScript会被调用,但不会调用错误消息。 它始终显示为无错误,即使它应该调用错误消息。 所有字段都显示为绿色

我是个新手,所以尽可能多地用谷歌搜索。我为某些地方的贫民区代码样式提前道歉:)

@节页脚{
Javascript:
$(“文档”).ready(函数()
{
$(“#表单管理”)。验证({
规则:{
密码现在:{
必填项:true
},
密码:{
要求:正确,
最小长度:3,
最大长度:20
},
密码确认:{
要求:正确,
最小长度:3,
最大长度:20,
equalTo:“#密码”
},
},
信息:{
密码现在:{
要求:“迪特nåværende passord文尼格斯特塔斯酒店”
},
密码:{
必填项:“Vennligst velg和nytt passord”
},
密码确认:{
必填项:“Vennligst bekreft det nye passordet”,
equalTo:“Passordene茎干器ikke”
},
},
submitHandler:函数(表单){
$(表格).ajaxSubmit({
成功:函数(){
$(“#表单管理”).addClass(“已提交”);
}
});
},
errorPlacement:函数(错误,元素){
错误.insertAfter(element.parent());
}
});
});
}
位于分部中的表格:

<div class="col-md-12">
<p class="text-success">@ViewBag.StatusMessage</p>
@if (ViewBag.HasLocalPassword){
  @Html.Partial("_ChangePasswordPartial")
}
else{
  @Html.Partial("_SetPasswordPartial")
}
</div>

@ViewBag.StatusMessage

@if(ViewBag.HasLocalPassword){ @Html.Partial(“\u ChangePasswordPartial”) } 否则{ @Html.Partial(“\u SetPasswordPartial”) }
以下是表格:

@using (Html.BeginForm("Manage", "Account", FormMethod.Post, new { @class = "smart-form", id = "form-manage", role = "form" }))
{

    @Html.AntiForgeryToken()
    <text>
    <fieldset>
        <section>
            <label class="input">
                <i class="icon-prepend fa fa-lock"></i>
                    @Html.PasswordFor(m => m.OldPassword, new { @class = "input", placeholder = "Nåværende passord", name = "passwordNow", style = "height:34px;" })
                <span class="icon-prepend fa fa-lock"></span>
            </label> 
        </section>

        <section>
            <label class="input">
                <i class="icon-prepend fa fa-lock"></i>
                @Html.PasswordFor(m => m.NewPassword, new { @class = "input", placeholder = "Nytt passord", name = "password", style = "height:34px;" })
                <span class="icon-prepend fa fa-lock"></span>
            </label>
        </section>

        <section>
            <label class="input">
                <i class="icon-prepend fa fa-lock"></i>
                @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "input", placeholder = "Bekreft passord", name = "passwordConfirm", style="height:34px;" })
                <span class="icon-prepend fa fa-lock"></span>
            </label>
        </section>
    </fieldset>

    <footer>
        <div class="col-xs-5 col-sm-7 col-md-6" style="padding-left:28px">
            @Html.ValidationSummary()
        </div>
        <input type="submit" value="Lagre endringer" class="btn btn-default" />
    </footer>
</text>
}
@使用(Html.BeginForm(“Manage”,“Account”,FormMethod.Post,new{@class=“smart form”,id=“form Manage”,role=“form”}))
{
@Html.AntiForgeryToken()
@Html.PasswordFor(m=>m.OldPassword,new{@class=“input”,placeholder=“Nåværende passord”,name=“passwordNow”,style=“height:34px;”)
@Html.PasswordFor(m=>m.NewPassword,new{@class=“input”,placeholder=“Nytt passord”,name=“password”,style=“height:34px;”)
@Html.PasswordFor(m=>m.ConfirmPassword,新的{@class=“input”,placeholder=“Bekreft passord”,name=“passwordConfirm”,style=“height:34px;”})
@Html.ValidationSummary()
}
一切都正常(令人惊讶),除了如果I f.ex没有填充字段,错误消息就不会显示。所需的长度也不起作用。如果我只在密码字段中输入1个字符,则仍显示为绿色

HTML输出

<form action="/Account/Manage" class="smart-form" id="form-manage" method="post" role="form">
    <input name="__RequestVerificationToken" type="hidden" value="irDP1GHQPXnPoPveq5N3QM5qcl4kuG1yf3-yl3rRrCXSKO52rvRMVjjY6WSG0WMChq__8FLMXjH1e_OmCjSn6L7-F3BVZD0mnEV_zZRjWZNKYliS6Zf7pkKiU2GaQ2VbPWWA9Hpni2jFM4e1MHnhgA2" />
    <fieldset>
        <section>
            <label class="input">
                <i class="icon-prepend fa fa-lock"></i>
                <input class="input" data-val="true" data-val-required="Du må fylle inn ditt nåværende passord." id="OldPassword" name="OldPassword" placeholder="Nåværende passord" style="height:34px;" type="password" />
                <span class="icon-prepend fa fa-lock"></span>
            </label>
        </section>

        <section>
            <label class="input">
                <i class="icon-prepend fa fa-lock"></i>
                <input class="input" data-val="true" data-val-length="Passordet må være minst 6 tegn." data-val-length-max="100" data-val-length-min="6" data-val-required="Du må fylle inn et nytt passord." id="NewPassword" name="NewPassword" placeholder="Nytt passord" style="height:34px;" type="password" />
                <span class="icon-prepend fa fa-lock"></span>
            </label>
        </section>

        <section>
            <label class="input">
                <i class="icon-prepend fa fa-lock"></i>
                <input class="input" data-val="true" data-val-equalto="&#39;Confirm new password&#39; and &#39;New password&#39; do not match." data-val-equalto-other="*.NewPassword" id="ConfirmPassword" name="ConfirmPassword" placeholder="Bekreft passord" style="height:34px;" type="password" />
                <span class="icon-prepend fa fa-lock"></span>
            </label>
        </section>
    </fieldset>

    <footer>
        <div class="col-xs-5 col-sm-7 col-md-6" style="padding-left:28px">
            <div class="validation-summary-valid" data-valmsg-summary="true">
                <ul>
                    <li style="display:none"></li>
                </ul>
            </div>
        </div>
        <input type="submit" value="Lagre endringer" class="btn btn-default" />
    </footer>
</form>

我想你必须考虑你的观点。尝试添加

@{ Html.EnableClientValidation(); }
或在web.config中添加以下条目

<appSettings>
  <add key="ClientValidationEnabled" value="true"/> 
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>

您的规则声明:

rules: {
    passwordNow: {  // <- must be name attribute
        required: true
    },
},
规则:{

passwordNow:{//您的javascript正在寻找“表单管理”,但看起来您给表单赋予了“智能表单”类,这可能是它没有命中所需javascript代码的原因。您能在浏览器中呈现后添加此类的输出(html)吗,元素没有帮助。当我现在填写一些东西时,周围的绿色边框也没有显示。当我把它改回“表单管理”时绿色边框在我在txtfields中填充内容后显示。编辑帖子以包含HTML输出呈现HTML中的
输入
元素的
名称
属性与
中声明的内容不匹配。validate()
在您的jQuery代码中。它们必须匹配。啊,这就成功了!!名称之所以如此,是因为“@Html.PasswordFor(m=>m.ConfirmPassword”行。只是将名称标记更改为相同的名称,并更改了JS中的引用:)谢谢!Sparky的评论解决了我的问题。客户端验证有效且无回发:)yey\o/呈现HTML中输入元素的名称属性与jQuery代码中.validate()中声明的不匹配。它们必须匹配。
rules: {
    passwordNow: {  // <- must be name attribute
        required: true
    },
},
<input name="OldPassword" type="password" />