双击设置表格的文本
Set text for table with double click
我有几个表,其中包含 ajax 加载的内容。有时我必须在将td
的内容导出为 PDF 之前手动更改它的内容,所以我认为最好的方法是使用 jQuery 的 .dblclick()
双击为每个td
创建一个触发器。触发器将打开一个带有input
字段的模式,并在提交模态时更改双击td
的文本。
这有效,但是当我更改第二个、第三个等td
的内容时,每个先前单击的td
也会获得新值。
检查我的小提琴:https://jsfiddle.net/fvoufq07/
到目前为止我的代码:
$( ".sitename" ).dblclick( function() {
var sitename = $( this );
$( "#msgBox .modal-title" ).html("Change sitename");
$( "#msgBox .modal-body" ).html("Enter new sitename:<input type='"text'" id='"new_sitename'">");
$( "#msgBox" ).modal("show");
$( "#msgBox button.btn" ).click( function() {
sitename.text( $( "#new_sitename" ).val().trim() );
});
});
这是因为您为模态重复使用相同的按钮。因此,每次打开模态时,您都会在按钮上添加新的侦听器,但不会杀死前一个侦听器。
您可以使用以下off
以下命令杀死以前的侦听器:
$( ".sitename" ).dblclick( function() {
var sitename = $( this );
$( "#msgBox .modal-title" ).html("Change sitename");
$( "#msgBox .modal-body" ).html("Enter new sitename:<input type='"text'" id='"new_sitename'">");
$( "#msgBox" ).modal("show");
$( "#msgBox button.btn" ).off('click').click( function() {
sitename.text( $( "#new_sitename" ).val().trim() );
});
});
您看到的问题是您添加到按钮的点击功能
$( "#msgBox button.btn" ).click( function() {
sitename.text( $( "#new_sitename" ).val().trim() );
});
未删除。因此,每次重新打开模型时,您都会更改任何以前单击的.sitename
以及新单击的文本。
为了避免这种情况,你应该删除点击事件,或者最好使用 jQuery 的 .one()
函数,该函数只会在触发事件的第一个实例上触发回调:
$( "#msgBox button.btn" ).one('click', function() {
sitename.text( $( "#new_sitename" ).val().trim() );
});
更新的小提琴:https://jsfiddle.net/fvoufq07/6/
更新:上述解决方案无法解决打开模式然后在不单击"关闭"保存按钮的情况下关闭的问题。
有几种方法可以解决此问题:在添加新的.one()
回调之前使用 .off()
,或者再次使用 .off()
,但有条件地使用 boottap 的 hidden.bs.modal
触发器进行模式关闭。
$( "#msgBox" ).one('hidden.bs.modal', function() {
$( "#msgBox button.btn" ).off('click');
});
您可能还希望将'click'
侦听器分配给变量,以便可以专门删除该侦听器,如果同一元素上有其他'click'
侦听器,这将非常有用。
var updateText = $( "#msgBox button.btn" ).one('click', function() {
...
});
$( "#msgBox" ).one('hidden.bs.modal', function() {
$( "#msgBox button.btn" ).off('click', updateText);
});
更新的小提琴在 https://jsfiddle.net/fvoufq07/7/有一个示例。
试试这个
var sitename;
$( ".sitename" ).dblclick( function() {
sitename = $(this);
$( "#msgBox .modal-title" ).html("Change sitename ");
$( "#msgBox .modal-body" ).html("Enter new sitename:<input type='"text'" id='"new_sitename'">");
$( "#msgBox" ).modal("show");
});
$( "#msgBox button.btn" ).click( function() {
$(sitename).text( $( "#new_sitename" ).val().trim() );
});
这是更新的JSFIDDLE
试试这个
$( ".sitename" ).dblclick( function() {
sitename = $( this );
$( "#msgBox .modal-title" ).html("Change sitename");
$( "#msgBox .modal-body" ).html("Enter new sitename:<input type='"text'" id='"new_sitename'">");
$( "#msgBox" ).modal("show");
$( "#msgBox button.btn" ).click( function() {
sitename.text( $( "#new_sitename" ).val().trim() );
});
}(;
克鲁佩什·科特查也打败了我,;)
- 将HTML表格导出到带有文本和图像的excel中
- 如何将表格中的文本添加到使用按钮输入的文本区域
- 单击每个表格行中的复选框时启用文本框
- Mvc表格如何更改文本的颜色条件
- 设置“;将标签视为文本“;通过脚本将Google电子表格图表的值设置为true
- “搜索”文本仅考虑表格中的最后一列
- 在表格或所需位置下方弹出文本
- 与表格中的文本完美对齐
- 在输入字段之前提取表格单元格中的文本
- 循环通过表格查找第一个具有 CSS CSSstablelisttdselect 的 TD 文本
- 使用外部 javascript 更改多个表格单元格中的文本
- 是否可以使用 javascript 读取文本或电子表格文件
- JQuery 显示来自可见 HTML 表格单元格的文本的串联列表
- 如何使用JavaScript在HTML表格中获取td内部的链接文本
- jQuery将文本添加到放置在表格单元格中的图像中
- 如何防止 td 中的文本破坏表格的对齐方式
- 根据单元格内容更改表格行的文本颜色,仅使用 css
- 使用 javascript 将表格单元格中的文本制作到 URL
- 从 html 表格单元格中获取内容值,并使用 javascript 使其显示在文本框中
- 使用谷歌融合表格地图的网页文本/JavaScript未显示