javascript - 允许用户在js创建的文本区域内进行选择

标签 javascript jquery

我有一个名为“What”的 div。 如果用户单击它,它就会从文本更改为文本区域输入。

$('.What').click(function() {
    $(this).empty().html('<textarea name="X">' + $(this).text() + '</textarea>');
    $(this).find('textarea').select();
});

您可以看到我还选择了新创建的文本区域。
如果用户单击文本区域,则不会发生任何事情。

问:如何允许用户单击新创建的文本区域字段以将光标定位在他们想要的位置?我怀疑这与使用现场事件来防止冒泡有关。

最佳答案

问题是,当您用文本区域替换 div 的内容后,您的点击处理程序不会消失。因此,每次单击文本区域都会冒出“What”-div 并再次触发事件处理程序,从而重新附加文本区域。

您必须确保单击文本区域不会触发您的处理程序。执行此操作的一个简单方法是 jquery 的 one 函数,该函数在调用一次事件处理程序后会解除绑定(bind)。

另一个问题是在清空 div 后获取其内容,因此 textarea 的默认值将始终为空字符串。这可以通过首先获取内容来解决。更正后的代码现在如下所示

$('.What').one('click',function() {
   var content = $(this).text();
   $(this).empty().html('<textarea name="X">' + content  + '</textarea>');
   $(this).find('textarea').focus();
});

请参阅此处的示例:http://jsfiddle.net/xszUS/

关于javascript - 允许用户在js创建的文本区域内进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411445/

相关文章:

javascript - 使用 JavaScript 检测和空间

javascript - 如何在内容脚本中使用 Flowplayer 函数?

javascript - 在数组中的每个项目上调用方法的简洁方法

javascript - 使用 payPal 按钮 - 用户可以在付款前更改价格

javascript - 如何在 JavaScript 中运行 0 到 10 分钟的计时器?

javascript - 如何制作一个计数 3 秒的函数

javascript - JQuery 使用通配符 (*) 选择元素

c# - 传递给 Controller ​​的数组接收为 NULL

javascript - 使用 jQuery 在 DIV 对象中附加 HTML 和 JSTL 代码的问题

jQuery 触发点击 - 请求中没有按钮值