【问题标题】:jQuery add text to same textarea multiple times glitchjQuery多次将文本添加到同一个文本区域
【发布时间】:2023-03-15 12:37:01
【问题描述】:

我建立了这个回复系统,人们可以通过点击reply回复其他cmets。当他们点击它时,它会运行这个函数,以便将@user 放在他们评论的开头:

$('#inputField').focus();
$('#inputField').text('');
$('#inputField').append(atowner);

atowner是调用函数时传入的变量。

这很有效,因为您可以继续单击reply 到许多不同的 cmets,它总是会擦除 <textarea> 并用新的 @newuser 重新填充。

我的问题是,如果我在<textarea> 中输入一些内容,然后将其全部删除,然后点击回复,它就不起作用了。但这很有趣,因为实际的 HTML 仍然显示它将@user 放入<textarea>,但您在网站上看不到它。当您继续提交评论时,它会在没有@user 的情况下提交。

所以基本上,为什么 HTML 对我撒谎,为什么只有当我首先在 <textarea> 中键入并擦除时它才显示出来(其余时间工作)?

【问题讨论】:

  • atowner 中有什么 - 简单的文本、html 或其他内容?
  • @Andrei atowner 始终是“@”和用户名(字符串)的变体。

标签: jquery html textarea append


【解决方案1】:

作为输入(即使认为它是 textarea,您也应该使用 val() 而不是 appendtext,因此您的代码将是:

$('#inputField').focus();
$('#inputField').val(atowner);

这应该可以解决您的问题,您还应该使用val 来检索内容。

这在页面加载时和用户执行任何操作之前有效,因为它读取 DOM 以填充可见的textarea,但在用户开始使用它之后被视为输入,这就是为什么它没有long 从内部的 DOM 中渲染任何东西。

【讨论】:

  • 这行得通。我不得不使用val,我也拿走了html('')
【解决方案2】:

你可以这样做:

$('#inputField').focus().val(atowner);

【讨论】:

    【解决方案3】:

    如果你使用会怎样

    $('#inputField').val(atowner);
    

    ?

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多