![](/img/trans.png)
[英]Unobtrusive client-side validation for bool field not working in ASP.NET Core MVC
[英]ASP.NET Core Unobtrusive Client Side Validation Form onsubmit fires even on validation failure
注意:这与.NET Core v2.0有关。 您可能会找到相关的帖子,但它们不能解决我面临的问题。
我正在使用以下代码进行不干扰客户端的验证:
<form asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" onsubmit="showPleaseWait()" >
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Username" class="control-label"></label>
<input asp-for="Username" class="form-control" placeholder="Username" />
<span asp-validation-for="Username" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Password" class="control-label"></label>
<input asp-for="Password" value="" class="form-control" placeholder="Password" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success btn-lg" style="margin:auto;display:block">Log in</button>
</div>
</form>
好东西是它在客户端执行验证。
但是,即使验证失败, form.onsubmit
触发form.onsubmit
事件。 结果,我的showPleaseWait
方法被调用。 我认为不应该调用它,因为由于验证失败而尚未提交表单。
下面是模型:
public class LoginViewModel
{
[Required]
public string Username { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
任何解决方案或解决方法将不胜感激。
jQuery Unobtrusive Validation和更高级别的jQuery Validation插件不会阻止提交事件,正如您已经注意到的,这意味着只要用户尝试提交表单,就会调用showPleaseWait()
函数。
进行此工作的一种方法是在尝试运行自己的代码之前,从showPleaseWait
函数中查询验证状态。 这是一个例子:
function showPleaseWait() {
if ($("form").valid()) {
// Your code here.
}
}
此实现利用了jQuery Validation的valid
功能,该功能:
检查所选表单是否有效或所有所选元素是否有效。
我刚刚在上面使用了一个简单的$("form")
选择器,但是如果您在一个页面上有多个表单,则可能需要更具体一些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.