微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在这种特殊情况下,如何在 textarea 中设置回车?

如何解决在这种特殊情况下,如何在 textarea 中设置回车?

我正在使用纯 JavaScript 开发 Merkle 树项目:https://nokusukun.github.io/ripemerkletree/。我想要做的是从用户输入一个单词的输入中填充 textarea(SHA256 中的哈希行),在该输入中用户输入一个直接发送散列到 textarea 的单词。问题是逐行发送这些哈希值:

if(document.getElementById('addHash').value == ''){ // if textarea is empty (first line)
    document.getElementById('addHash').value = SHA;
}
else { // next lines with carriage return '\n'
    document.getElementById('addHash').value += '\n'+SHA; 
}

结果:

03e71c6d7dc6bd4e89ceaf32f6488ca0aa69b0de784b706cac5818d680e9d97f
ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb

但是当我单击“生成树”时,它不起作用。什么都没发生。

如果我用鼠标手动删除回车符 (\n) 并使用键盘创建一个新行,则它可以工作并创建父哈希:

Merkle root: 63c01e0a28d74ab4665d0ab37e683a9208758637449951a117befdd70d6e1f10

-> 将两个哈希复制并粘贴到 textarea 中以检查是否生成了“根”哈希。

我在 Stackoverflow 上找到并测试了一堆解决方案,但没有一个有效:

javascript:   
   \r\n   String.fromCharCode(13,10)  \u000A \u000D \u0085
css:   white-space: pre-wrap; overflow-wrap: break-word;  

同样的问题:屏幕上的结果正常(我在 textarea 中有两行)但点击时没有任何反应,但手动删除伪新行和键盘上的回车有效。

如果我在第一行手动复制并粘贴一个散列并自动生成第二个,那么它就可以工作,父散列就会生成。所以我尝试创建第一个自动散列并使用以下代码包含第二个:

document.getElementById('addHash').value = sha256('test');
function doSHA() {  
    let SHA = sha256( document.getElementById('word').value );
    document.getElementById('addHash').value += '\n'+SHA;
}

我有两行,但它仍然不起作用。我的最后一个想法是将 \n 放在每一行之后:

    document.getElementById('addHash').value += SHA+'\n';

如果我手动删除最后一个 \n(第三个空行),它会起作用。

03e71c6d7dc6bd4e89ceaf32f6488ca0aa69b0de784b706cac5818d680e9d97f
ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
<-

我当然可以在我点击按钮时以编程方式删除它,但它并没有解释为什么会出现这个问题...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。