在表格中单击表单外的操作
Action on clicking out of a form, inside a table
从这里开始,需要处理所有相关代码:http://jsfiddle.net/baruck/43787/我正在构建一个网络应用程序,在某个时候用户需要注册一些项目。这是一个很大的表格,表格的这一部分在一张桌子里面。每个输入标记都在一个td内,后面跟一个span。当用户单击编辑某一行时,脚本会隐藏跨度(保存输入值)并显示输入。当用户单击另一行(或创建一个新行)时,脚本会选择输入的值添加/更改span文本并隐藏输入并显示span。
当用户点击某一行时,它首先选择添加"编辑"类的行,第二次点击将焦点放在输入上。
当我点击表格时,一切都很顺利;问题是当我在包含输入的表之外单击时,或者在活动行上的最后一个输入之后点击选项卡时。焦点转移到其他地方。。。
当这两个操作中的一个发生时,我想"停用行",即从该行的输入中提取值,在span中添加/更改它们,隐藏输入并显示span。
摘要:当用类"可编辑"在表外单击时,或者当在行的最后一个输入上"制表符离开"时,需要启动此功能。。。
function deactivateRows() {
//Deactivate editing on the rows
$('table.editable tr.editing').removeClass('editing');
$('table.editable').find('td').not('.delete').each(function () {
$(this).find('input').each(function () {
var inputContent = $(this).val();
$(this).prop('disabled', true).addClass('hide').attr('value', inputContent);
$(this).parent().find('span').html(inputContent).removeClass('hide');
});
});
}
我认为诀窍是从点击的元素或模糊事件的相关元素向上遍历DOM,看看你是否点击了table.editable
var isInsideEditable = function (el) {
return !!el && $(el).closest('table.editable').length > 0;
};
$('select, input, textarea', '.editable').on('blur', function (e) {
if (!isInsideEditable(e.relatedTarget))
deactivateRows();
});
$(window).on('click', function (e) {
if (!isInsideEditable(e.target))
deactivateRows();
return false;
});
相关文章:
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 如何根据所选选项值重定向表单操作
- 从输入时提交到jQuery,无需提交按钮,无需表单操作
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 使用Javascript/jQuery以编程方式将当前锚点/哈希/片段附加到任何表单操作url
- Rails-带有单选按钮的表单,带有启用/禁用附加元素的javascript操作
- jQuery表单验证(如果==“执行此操作”)仅适用于第一次输入
- 如何根据所选的下拉值更改表单值操作
- 当我的表单中已经有一个操作时添加JavaScript
- 表单操作值未从attr()函数中获取
- 表单在由ajax部分Ruby创建时有错误的操作
- JavaScript 表单操作更改RC方法发布文本输入提交
- 具有两个提交按钮和两个不同操作的 HTML 表单
- 如何在开机自检前操作表单文件输入
- 在提交之前操作表单值而不向用户显示
- 如何在支柱中使用操作表单设置文本框值
- 当一页上有超过24个表单时,操作表单数据
- 如何在jQuery提交处理程序中操作表单元素
- 更改弹簧表单上的操作:表单提交
- 如何将 PHP 变量加载到操作表单帖子中