从span标签转换为输入框,反之亦然
Convert to input box from span tag and vice versa
我正试图弄清楚如何将span标签转换为输入框,反之亦然在我正在构建的web应用程序上。我可以将span标签转换为一个输入框,但由于某种原因,如果您第二次单击span标签,它不会将其转换为一个输入框。我只能假设这是因为jQuery中处理程序的绑定和解绑定,但我无法找出处理该功能的最佳方法。什么好主意吗?
$('[content-editable]').click(function(){
var edit_box = $(this);
$(edit_box).html('<input type="text" content-editing value="' + $(edit_box).html() + '">');
$(edit_box).find('input').select();
setTimeout(function(){
$('body').on('click', function(){
$(edit_box).html($(edit_box).find('input').val());
});
}, 500);
});
p。添加超时是为了防止输入框在点击后直接变成span标签。
我的JS提琴:http://jsfiddle.net/AaxT9 -由于某些原因,在JS提琴它不转换回跨度标签后,点击主体,但它在我的web应用程序。
在你的尝试中有多个问题:
-
您将处理程序放在错误的位置。把它放在另一个点击处理程序中,将多次分配处理程序,并逐步调用处理程序。
-
您可能想要点击其他地方将其转换回span。所以选择
document
点击绑定 -
另外,保持你的代码在
$(document).ready()
函数,以确保DOM已加载
这样做:
$(document).ready(function() {
var edit_box = $('[content-editable]');
$(document).on("click",function() {
console.log($(event.target));
if($(event.target).is("[content-editable]")) {
$(edit_box).html('<input type="text" value="' + $(edit_box).html() + '">');
$(edit_box).find('input').select();
}
else if(!$(event.target).is("input")){
$(edit_box).html($(edit_box).find('input').val());
}
});
});
我有document
点击为我的一部分,但如果你想使用body
点击处理程序,那么你可以使用它,但这将转换input
回span
只在body
点击。
不要设置超时时间,而是将代码移回onblur
函数中添加的span
。
$('[content-editable]').click(function () {
var edit_box = $(this);
$(edit_box).html('<input type="text" value="' + $(edit_box).html() + '">');
$(edit_box).find('input').select().on('blur', function () {
$(edit_box).html($(edit_box).find('input').val());
});
});
编辑
$('[content-editable]').click(function () {
var edit_box = $(this);
$(edit_box).html('<input type="text" value="' + $(edit_box).html() + '">');
$(edit_box).find('input').select().one('blur', function () {
$(edit_box).html($(edit_box).find('input').val());
});
});
小提琴
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何从隐藏输入中填充多选输入,反之亦然
- 更改输入文本以选择选项,反之亦然
- 如何选择当前输入字段,然后禁用并清空下一个字段(反之亦然)
- 如何将数字转换为货币,反之亦然?(html输入/输出)
- 如何在React中进行两天的数据绑定,当输入值A更新时B更新,反之亦然,同时保留以前转换的历史记录
- 如何使用react进行双向数据绑定,使输入值A在B更新时更新,反之亦然
- 在HTML画布/Javascript上捕获用户输入,反之亦然
- 从span标签转换为输入框,反之亦然
- 表单与复选框输入字段,反之亦然-缺少第一个值
- 新的webkit在数字类型输入中将十进制逗号转换为~ dot,反之亦然.该浏览器特性的Javascript名称
- 如果未选中复选框,则禁用html中的文本输入,反之亦然
- $dirty标志在文本框中输入值时设置为true,但反之亦然