- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为表格元素使用 form-repeater 插件。填充表格后,当我单击加号按钮(添加新行)时,需要花费大量时间(大约 10-15 秒)来附加新行。
Screenshot of my table
每次点击(加号按钮)时都会执行以下功能
我尝试过的事情:
NOTE - 1 : I am using summernote extremely customized for the Min-Max-Range-Columns. NOTE - 2 : I am using select2 plugin for the dropdownlist Columns.
因此我认为时间滞后可能是由于以下原因造成的
加号按钮的 HTML 代码(虚拟和原始):
<td colspan="2">
<button data-repeater-create type="button" class="btn btn-gradient-
info btn-sm icon-btn ml-2 mb-2" id="btnaddnewroworiginal"
style="display:none;">
<i class="mdi mdi-plus"></i>
</button>
<button type="button" class="btn btn-gradient-info btn-sm icon-btn
ml-2 mb-2 btnaddnewrowdummy" data-toggle="tooltip" data-
placement="top" title="Add new row">
<i class="mdi mdi-plus"></i>
</button>
</td>
加号按钮点击事件:
$(document).on("click", ".btnaddnewrowdummy", function () {
var EmptyInputs = CheckEmptyInputs();
if (EmptyInputs > 0) {
alert("Empty Inputs Found. Please fill all the required (*) values.");
}
else {
var DuplicateRangeValues = CheckDuplicateRanges();
if (DuplicateRangeValues > 0) {
alert("Duplicate Max-Range values found. Please enter unique values.");
}
else {
$("#SubCategoryTable tr").each(function () {
$(this).addClass("completed");
});
$("#btnaddnewroworiginal").click();
$("#SubCategoryTable tr:last").find('.txtname').val('');
$("#SubCategoryTable tr:last").find(".txtminage").val("0");
$("#SubCategoryTable tr:last").find(".txtmaxage").val("99");
$("#SubCategoryTable tr:last").find('.js-example-basic-single').select2({
escapeMarkup: function (markup) {
return markup;
}
});
$("#SubCategoryTable tr:last").find(".js-example-basic-single-2").select2();
$("#SubCategoryTable tr:last").find(".summernote").summernote({
toolbar: [],
height: 50,
minHeight: 50,
maxHeight: 50,
disableResizeEditoroption: true
});
$("#SubCategoryTable tr:last").find(".summernote").each(function () {
$(this).summernote('code', '');
});
$("#SubCategoryTable tr:last").find('.note-editable').off();
$('[data-toggle="tooltip"]').tooltip();
$("#SubCategoryTable tr:last").find(".txtsubheading").val($("#SubCategoryTable tr:last").prev("tr").find(".txtsubheading").val().trim());
$("#SubCategoryTable tr:last").find(".ddlItemFor").val($("#SubCategoryTable tr:last").prev("tr").find(".ddlItemFor").val()).trigger("change");
if ($("#SubCategoryTable tr:last").prev("tr").find(".txtsubheading").val().trim() != "") {
$("#SubCategoryTable tr:last").find(".selectUnits").val($("#SubCategoryTable tr:last").prev("tr").find(".selectUnits").val()).trigger("change");
}
}
}
});
CheckEmptyInputs 函数:
function CheckEmptyInputs() {
var empty_count = 0;
$("#SubCategoryTable tr").each(function () {
var row = $(this);
if ($(row).hasClass("completed") == false) {
var name = row.find("td").find(".txtname").val();
if (name.trim() == "") {
empty_count++;
}
var UnitsVal = row.find("td").find(".selectUnits").val();
if (UnitsVal == 0) {
empty_count++;
}
var minage = row.find("td").find(".txtminage").val();
if (minage.trim() == "") {
empty_count++;
}
var maxage = row.find("td").find(".txtmaxage").val();
if (maxage.trim() == "") {
empty_count++;
}
var minmalerange = row.find("td").find(".txtminmalerange").summernote("code");
if (minmalerange.trim() == "") {
empty_count++;
}
var minfemalerange = row.find("td").find(".txtminfemalerange").summernote("code");
if (minfemalerange.trim() == "") {
empty_count++;
}
}
});
return empty_count;
}
CheckDuplicateRanges 函数:
function CheckDuplicateRanges() {
var MinMaleRange = "";
var MaxMaleRange = "";
var MinFemaleRange = "";
var MaxFemaleRange = "";
var DuplicateCount = 0;
$("#SubCategoryTable tr").each(function () {
var row = $(this);
if ($(row).hasClass("completed") == false) {
MinMaleRange = row.find("td").find(".txtminmalerange").summernote("code").replace(/ /g, '').replace(/<br\s*[\/]?>/gi, '').replace(/\s/g, '');
MaxMaleRange = row.find("td").find(".txtmaxmalerange").summernote("code").replace(/ /g, '').replace(/<br\s*[\/]?>/gi, '').replace(/\s/g, '');
if (MinMaleRange == MaxMaleRange) {
DuplicateCount++;
row.find("td").find(".txtmaxmalerange").next().css("border-color", "red");
}
else {
row.find("td").find(".txtmaxmalerange").next().css("border-color", "#ebedf2");
}
MinFemaleRange = row.find("td").find(".txtminfemalerange").summernote("code").replace(/ /g, '').replace(/<br\s*[\/]?>/gi, '').replace(/\s/g, '');
MaxFemaleRange = row.find("td").find(".txtmaxfemalerange").summernote("code").replace(/ /g, '').replace(/<br\s*[\/]?>/gi, '').replace(/\s/g, '');
if (MinFemaleRange == MaxFemaleRange) {
DuplicateCount++;
row.find("td").find(".txtmaxfemalerange").next().css("border-color", "red");
}
else {
row.find("td").find(".txtmaxfemalerange").next().css("border-color", "#ebedf2");
}
}
});
return DuplicateCount;
}
表单重复器代码:
(function($) {
'use strict';
$(function() {
$('.repeater').repeater({
defaultValues: {
'text-input': 'foo'
},
show: function () {
$(this).slideDown();
// I wonder if there is a problem with .not()
$('#tblRepeater>tbody>tr').not(':first').each(function () {
var select = $(this).closest('tr').find(".drpUnits");
$(this).closest('tr').find(".drpUnits").addClass('js-example-basic-double');
// I think this line here is unnecessary as it is
// initialized in my code ??
$('.js-example-basic-double').select2();
});
},
hide: function (deleteElement) {
if (confirm("Are you sure you want to delete this row ?. Once deleted data cannot be retrieved.")) {
$(this).slideUp(deleteElement);
}
else {
}
},
isFirstItemUndeletable: false
})
});
})(jQuery);
最佳答案
我的问题终于得到解决了。我所做的只是按照 form-repeater js 代码的预期隐藏了这些行。因为每次我单击加号按钮时,这些行都会重复地重新初始化 $.each 中所有行的所有行。
我的解决方案: 我从表单重复器中隐藏了这四行,这将时间延迟从 15-20 秒大幅减少到 1-2 秒
show: function () {
$(this).slideDown();
//$('#tblRepeater>tbody>tr').not(':first').each(function () {
//var select = $(this).closest('tr').find(".drpUnits");
//$(this).closest('tr').find(".drpUnits").addClass('js-example-basic-double');
//$('.js-example-basic-double').select2();
//});
},
关于javascript - 使用 form-repeater 在填充的表中附加新行需要花费大量时间(10-15 秒) - jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123389/
我有一台 MySQL 服务器和一台 PostgreSQL 服务器。 需要从多个表中复制或重新插入一组数据 MySQL 流式传输/同步到 PostgreSQL 表。 这种复制可以基于时间(Sync)或事
如果两个表的 id 彼此相等,我尝试从一个表中获取数据。这是我使用的代码: SELECT id_to , email_to , name_to , status_to
我有一个 Excel 工作表。顶行对应于列名称,而连续的行每行代表一个条目。 如何将此 Excel 工作表转换为 SQL 表? 我使用的是 SQL Server 2005。 最佳答案 这取决于您使用哪
我想合并两个 Django 模型并创建一个模型。让我们假设我有第一个表表 A,其中包含一些列和数据。 Table A -------------- col1 col2 col3 col
我有两个表:table1,table2,如下所示 table1: id name 1 tamil 2 english 3 maths 4 science table2: p
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 1 年前。 Improve th
下面两个语句有什么区别? newTable = orginalTable 或 newTable.data(originalTable) 我怀疑 .data() 方法具有性能优势,因为它在标准 AX 中
我有一个表,我没有在其中显式定义主键,它并不是真正需要的功能......但是一位同事建议我添加一个列作为唯一主键以随着数据库的增长提高性能...... 谁能解释一下这是如何提高性能的? 没有使用索引(
如何将表“产品”中的产品记录与其不同表“图像”中的图像相关联? 我正在对产品 ID 使用自动增量。 我觉得不可能进行关联,因为产品 ID 是自动递增的,因此在插入期间不可用! 如何插入新产品,获取产品
我有一个 sql 表,其中包含关键字和出现次数,如下所示(尽管出现次数并不重要): ____________ dog | 3 | ____________ rat | 7 | ____
是否可以使用目标表中的LAST_INSERT_ID更新源表? INSERT INTO `target` SELECT `a`, `b` FROM `source` 目标表有一个自动增量键id,我想将其
我正在重建一个搜索查询,因为它在“我看到的”中变得多余,我想知道什么 (albums_artists, artists) ( ) does in join? is it for boosting pe
以下是我使用 mysqldump 备份数据库的开关: /usr/bin/mysqldump -u **** --password=**** --single-transaction --databas
我试图获取 MySQL 表中的所有行并将它们放入 HTML 表中: Exam ID Status Assigned Examiner
如何查询名为 photos 的表中的所有记录,并知道当前用户使用单个查询将哪些结果照片添加为书签? 这是我的表格: -- -- Table structure for table `photos` -
我的网站都在 InnoDB 表上运行,目前为止运行良好。现在我想知道在我的网站上实时发生了什么,所以我将每个页面浏览量(页面、引荐来源网址、IP、主机名等)存储在 InnoDB 表中。每秒大约有 10
我在想我会为 mysql 准备两个表。一个用于存储登录信息,另一个用于存储送货地址。这是传统方式还是所有内容都存储在一张表中? 对于两个表...有没有办法自动将表 A 的列复制到表 B,以便我可以引用
我不是程序员,我从这个表格中阅读了很多关于如何解决我的问题的内容,但我的搜索效果不好 我有两张 table 表 1:成员 id*| name | surname -------------------
我知道如何在 ASP.NET 中显示真实表,例如 public ActionResult Index() { var s = db.StaffInfoDBSet.ToList(); r
我正在尝试运行以下查询: "insert into visits set source = 'http://google.com' and country = 'en' and ref = '1234
我是一名优秀的程序员,十分优秀!