多个文本区域

Multiple textareas

提问人:Oříšek 提问时间:11/3/2020 更新时间:11/3/2020 访问量:1046

问:

如何将多个 TextAreas 重置为其默认值(文本)?不给他们特定的课程可能吗?我只找到了一个文本输入的解决方案,但在 1 页上有多个文本区域没有成功,按功能重置。

<html>  
<body>
<textarea rows="1" cols="30">Hello World</textarea><br/>
<textarea rows="1" cols="30">Hello Second World</textarea><br/>

<button onclick="reset()">Reset</button>

<script>

            function reset() {
                document.querySelectorAll('textarea').value = <!--Default Value-->
                            }
                           
</script>

</body>
</html>
JavaScript 文本区域

评论

0赞 Niet the Dark Absol 11/3/2020
把它们放在一个电话里......(或用来为你做)<form>form.reset()<input type="reset" />
0赞 Oříšek 11/3/2020
不幸的是,我需要留在文本区域:(

答:

0赞 Aritrik 11/3/2020 #1

您需要修改 js 脚本,如下所示:

    function reset() {
        document.querySelectorAll('textarea').forEach((elem) => elem.value = "Desiered value");
    }

或者,您可以使用 HTML 占位符并将 textarea 值设为空。

评论

0赞 Oříšek 11/3/2020
谢谢你的回答,但我需要将textarea重置为默认文本= Hello world和Hello second world。不要将自定义值放在所有文本区域...
2赞 Bastiyan 11/3/2020 #2

这样的事情怎么样?

Address:<br>
<textarea id="myTextarea">
342 Alvin Road
Ducksburg</textarea>

<textarea id="myTextarea2">
Value 2</textarea>

<p>Click the button to change the contents of the text area.</p>

<button type="button" onclick="myFunction()">Try it</button>

<script>
function myFunction() {
  document.getElementById("myTextarea").value = "Txt1";
  document.getElementById("myTextarea2").value = "Txt2";
}
</script>

编辑以匹配注释中的用例

根据 MDN 的说法,textarea 没有 value 属性。

当页面加载时,textarea 的默认值是介于某个值之间的任何值。因此,当用户更改它时,我们没有办法找到原始值。

为了克服这个问题,我们需要某种机制来存储默认值

在你的例子中,如果你有很多元素(Textareas),使用数据属性将帮助我们在页面加载和用户更改值后识别默认值

因此,请使用以下示例

<textarea rows="1" cols="30" data-default="Default Val">Hello World</textarea><br/>
<textarea rows="1" cols="30" data-default="Default Val1">Hello World</textarea><br/>
<textarea rows="1" cols="30" data-default="Default Val2">Hello World</textarea><br/>

<button onclick="reset()">Reset</button>

<script>

            function reset() {
                
                var textareas = document.querySelectorAll('textarea');
                    for(i =0; i < textareas.length; ++i){
                        textareas[i].value = textareas[i].getAttribute('data-default');
                    }   
                }
                           
</script>

评论

0赞 Oříšek 11/3/2020
感谢您的回复。这适用于很少的文本区域,但不幸的是,我在页面中有几十个文本区域,并且此脚本将不必要地广泛。我只需要选择页面中的所有文本区域并将其值设置为默认值......
0赞 Oříšek 11/3/2020
感谢您的回答,该答案:)正常工作有没有办法避免为每个文本区域手动写入 data-default 属性?像JS一样,在页面开头将data-default设置为某些文本区域的当前值?
0赞 Bastiyan 11/3/2020
您可以以相反的顺序考虑相同的过程。试一试,让我们知道它是怎么回事
0赞 Oříšek 11/3/2020
可以使用 textareas[i].setAttribute(“data-default”, textareas[i].value);:)