gpt4 book ai didi

c# - ASP.NET Core 不引人注目的客户端验证表单 onsubmit 即使在验证失败时也会触发

转载 作者:行者123 更新时间:2023-12-01 07:04:23 25 4
gpt4 key购买 nike

注意:这与 .NET Core v2.0 有关。您可能会找到相关帖子,但它们没有解决我面临的问题。

我正在申请Unobtrusive Client side验证代码如下:

<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 事件也会被触发。结果,我的 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 函数中查询验证状态。这是一个例子:

function showPleaseWait() {
if ($("form").valid()) {
// Your code here.
}
}

此实现利用了 jQuery Validation 的 valid函数,其中:

Checks whether the selected form is valid or whether all selected elements are valid.

上面我刚刚使用了一个简单的 $("form") 选择器,但如果您在单个页面上有多个表单等,则可能需要更具体。

关于c# - ASP.NET Core 不引人注目的客户端验证表单 onsubmit 即使在验证失败时也会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53934575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com