表单中的Javascript验证
我想弄明白这一点已经很久了。 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:
$(“文档”).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="'Confirm new password' and 'New password' 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" />