【发布时间】:2015-10-21 19:38:38
【问题描述】:
我正在尝试创建一个字段即时更改的表单。
从简单的文本开始,当有人点击此文本时,它会转移到可编辑的文本输入字段。当有人点击离开时,它会变回不可编辑的文本。
我试了一下,但它似乎不能正常工作。在前几次点击时工作正常,但随后它丢失了 inputId 并混合了按钮。
这里是html
<p id="firstElement" onclick="turnTextIntoInputField('firstElement');">First Element</p>
<p id="secondElement" onclick="turnTextIntoInputField('secondElement');">Second Element</p>
这里是 JavaScript(使用 jQuery)。
我是 JavaScript 新手,所以它可能不是最优质的代码...
function turnTextIntoInputField(inputId)
{
console.log(inputId);
inputIdWithHash = "#"+inputId;
elementValue = $(inputIdWithHash).text();
$(inputIdWithHash).replaceWith('<input name="test" id="'+inputId+'" type="text" value="'+elementValue+'">');
$(document).click(function(event) {
if(!$(event.target).closest(inputIdWithHash).length) {
$(inputIdWithHash).replaceWith('<p id="'+inputId+'" onclick="turnTextIntoInputField(\''+inputId+'\')">'+elementValue+'</p>');
}
});
}
这是小提琴https://jsfiddle.net/7jz510hg/的实时示例
我会很感激任何帮助,因为它让我头疼......
【问题讨论】:
-
一种选择是否只有
<input>元素,但默认情况下会删除所有输入样式,因此它们看起来只是文本,并在它们集中注意力时将其放回? (CSS:not(:focus)可能会派上用场)
标签: javascript jquery html