【问题标题】:javascript replace text in textarea not workingjavascript替换textarea中的文本不起作用
【发布时间】:2018-04-11 14:32:57
【问题描述】:

我的应用正在获取用户在 textarea div 中的输入,调用 API,然后返回值。返回的值被推入 badWords 数组,然后与用户的输入进行比较。如果匹配,则认为单词拼写错误或“坏词”。

当一个词是“坏词”时,我将其涂成红色。

我的问题是我的 JS 在 Test Div 中工作。当我将 ID 从 test div 更改为 textarea div 时:

$('#test').append(str);

进入:

var p = document.getElementById('test');

到:

"#user-input"

和:

"user-input"

屏幕上和文本区域都没有显示。

我已经尝试解决这个问题几天了,但我却把自己逼到了墙角。任何帮助或见解将不胜感激。

HTML:

<!-- Test Div -->
<!-- Here is where the input is going -->
<div id="test"></div>

<!-- Textarea Div -->
<!-- I want user input to go here -->
<textarea id="user-input" class="input-class" type="text" placeholder="Enter your bad grammar"></textarea>

JS/JQ:

var str = $("#user-input").val().trim();
$('#test').append(str);

// Stores the bad words or error words
var badWords = [];

// Stores the better words to be used for improvement
var betterWords = [];

// Looping through the results returned by API
for (var i = 0; i < response.errors.length; i++) {

badWords.push(response.errors[i].bad)
betterWords.push(response.errors[i].better)
}

var p = document.getElementById('test');
            var newInput = p.innerHTML
            console.log(newInput);

            badWords.forEach(function (bWord) {
                console.log('bad word ', bWord);
                newInput = newInput.replace(bWord, `<span class="color badword">${bWord}<span class="tooltiptext">try :'${betterWords}</span></span>`)
            });

            p.innerHTML = newInput

        })    

【问题讨论】:

  • 你能提供小提琴或代码片段吗?
  • 您不能将跨度添加到文本区域中。它是无效的 HTML
  • 我很快做了一个codepen。现在没有任何效果:jsfiddle.net/dkhkvcpf/10

标签: javascript jquery replace append textarea


【解决方案1】:

尝试使用val 而不是追加或替换

我认为:

p.val(newInput)

替代方案:

使用带有contenteditable 的 div 而不是 textarea

【讨论】:

  • 我本来打算这样做,但你不能在文本区域内添加跨度文本颜色
  • 我认为这应该附加 HTML 标签,这可能是所需的输出
  • 在我为文本着色并进入与输入文本相同的字段后,我希望能够将鼠标悬停在该红色单词上,查看建议替换列表,因此跨度为最后一个函数。
  • 我认为您可以继续在 codepen.io 上尝试编写一些可以帮助我们帮助您的代码。基本上,用尽可能少的代码演示你的问题,试图专注于你的确切问题。
【解决方案2】:

使用 Input 更改 Textarea,因为我认为我们无法使用 Textarea 进行更改

【讨论】:

  • 我实际上在输入时遇到了同样的问题,但我也会试试这个。我离开了输入,因为我在某处读过,如果你想动态调整字段,最好将 textarea 与 jquery 一起使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 2018-07-07
相关资源
最近更新 更多