在元素外部单击时重置输入字段
Reset input-field when click outside the element
我有下面的代码来启用内联编辑
$('.edit_td').click(function() {
resetEditedCells();
$(this).addClass('active').html('<input type="text" value="' + $(this).html() + '">');
});
function resetEditedCells() {
$('.edit_td.active').html(function() {
return $(this).find('input').val();
});
}
当从td切换到td时可以正常工作。但是当我在表外的任何地方单击时,我希望输入字段转换回常规tds。
我试过了:
$(document).on('blur', function(e) {
if($('.edit_td').hasClass('active')) {
$('.active').remove();
} else {
alert("false");
}
});
.blur()没有被触发。有人知道吗?
尝试像这样替换您的代码
$(document).on('click', function(e) {
var edit_td = $(e.target).closest('.edit_td');
if ( edit_td.length > 0 ) {
resetEditedCells();
edit_td.addClass('active')
.html('<input type="text" value="' + edit_td.html() + '">');
}else{
$('.edit_td.active').removeClass('active').empty();
}
});
这使用closest()
来确定点击是来自TD内部还是外部。
你需要使用click event来代替blur:
$(document).click(function() {
if($('.edit_td').hasClass('active')) {
$('.active').remove();
} else {
alert("false");
}});
也修改td click event为stopPropagation
:
$('.edit_td').click(function(e) {
e.stopPropagation();
resetEditedCells();
$(this).addClass('active').html('<input type="text" value="' + $(this).html() + '">');
});
试试这个js代码,其中edit_td类应用到每个td和活动类上,并且在活动td上绑定了blur函数,并在它们上应用了"edit_td"answers"active"类。
$('.edit_td.active').on('blur', function(e) {
$('.active').remove();
});
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在HTML输入字段中添加不可删除的后缀
- 互斥单选按钮和相应的输入字段
- 在IE9中的输入字段中输入焦点最近按钮
- 选中单选框时将属性添加到输入字段
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 输入字段将't获取更新的值
- 如何选择多个输入字段并删除所需的属性
- 输入字段,只接受0到12之间的数字
- 单击鼠标,用MySQL数据填充html表单输入字段
- 使用jquery将输入字段转换为文本
- Model中的Typeahead返回空值以形成输入字段
- 如何从查询字符串中的输入字段发回文本
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- 将值传递给jquery创建的输入字段