jquery - 将 html 加载到模态中会破坏 jquery 验证中的内容
问题描述
我创建了一个页面,该页面在单击链接/按钮时将部分视图加载到引导模式(使用 jquery)中。但是,这样做会导致一些我需要修复的不良行为。
页面是这样写的:
<div class="modal animate__animated animate__fadeIn" id="editmodal">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="editmodaltitle">Modal title</h5>
<button type="button" class="btn-close" onclick="ToggleModal('editmodal');" aria-label="Close"></button>
</div>
<div class="modal-body" id="editmodalbody">
...
</div>
</div>
</div>
</div>
部分观点是:
@model Data_Loggers.Areas.Admin.ViewModels.UserDetailsViewModel
@{
Layout = null;
}
<div class="col-auto form-group rounded-3 p-3">
<form asp-controller="User" asp-action="Update" id="detailsform" method="post">
@Html.AntiForgeryToken()
<label asp-for="Username"></label>
<input asp-for="Username" class="form-control" />
<label asp-for="@Model.DisplayName"></label>
<input asp-for="@Model.DisplayName" class="form-control" />
<label asp-for="PhoneNumber"></label>
<input asp-for="PhoneNumber" class="form-control" />
<label asp-for="ExpirationDate"></label>
<input asp-for="ExpirationDate" class="form-control" />
<label asp-for="LockoutEnabled">محدودیت زمانی</label>
<input asp-for="LockoutEnabled" type="checkbox" checked="@Model.LockoutEnabled" class="form-check-input" />
<hr>
<button type="submit" class="btn btn-primary" onclick="EditUser();">تایید</button>
<div class="btn btn-danger">انصراف</div>
</form>
</div>
这是将html加载到模态中的javascript:
function ReplaceContent(modalcontent) {
let title = 'جزئیات کاربر ';
$('#editmodalbody').html(modalcontent);
SetModalTitle(title + $('#Username').val());
$('#editmodal').toggle();
$('#detailsform').validate();
}
局部视图的模型也是:
public class UserDetailsViewModel
{
public string Id{ get; set; }
[Display(Name = "نام کاربری")]
[MinLength(3)]
[Required]
public string Username{ get; set; }
public string Password{ get; set; }
[Display(Name = "نام مستعار")]
[MinLength(3)]
[Required]
public string DisplayName{ get; set; }
[Display(Name = "تاریخ انقضا")]
public string ExpirationDate{ get; set; }
[Display(Name = "دارای محدودیت زمانی")]
public bool LockoutEnabled{ get; set; }
[Display(Name = "شماره تلفن")]
public string PhoneNumber { get; set; }
}
加载页面并打开模式时,部分视图加载正常,数据传递给视图没有任何问题(并且验证数据属性正确生成)。但是,当提交带有一些无效数据的表单时,jquery 验证不起作用并且表单提交。调用$('#detailsform').valid()
总是产生一个true
值。
解决方案
找到了。
在将 html 加载到页面后,我必须加载验证脚本。否则他们将无法工作。我用了
$.getScript('path/to/script.js');
所以正确的顺序是这样的:
- 将 HTML 加载到元素中。
- 包括使用验证脚本
$.getScript('path/to/script.js');
- 显示模态
推荐阅读
- doxygen - 如何使用 Doxygen tableofcontents 命令
- java - 为具有泛型类型的 Java POJO 生成 Avro Schema
- azure-powershell - Azure 自动化 Power Shell - 如何从 URL 下载 Zip 文件夹并发布到 Azure blob
- string - 来自字符串“\”的Golang trimPrefix
- nuget - 自动化 .net 框架包安装:解决包对其他包的依赖
- c# - 如何在 Outlook 加载项中的 Outlook.AppointmentItem 正文中显示 HTML 内容
- postgresql - 将html插入数据库时如何解决引号问题?
- ios - Xcode 11 测试计划似乎没有本地化模拟器状态栏
- javascript - 在原型上实现地图时增加对回调方法的理解
- javascript - 返回数组内对象的值