1

我有一个文本区域,用户可以在其中输入评论并按 Enter 提交评论,然后应该清除文本区域的文本并出现占位符,所以我使用了这个功能

<tr id="SC-1-Comment" style="background-color:white;">
<td colspan="2">
    <textarea id="id_COMMENT_to_POST-1" name="Comment" style="resize: none; vertical-align: middle;" placeholder="Leave a comment..." 
        onkeydown="
        if (event.keyCode == 13 && !event.shiftKey) 
        {
            event.preventDefault();
            NEW_COMMENT('commentsinnerhtml-1', '1',document.getElementById('id_COMMENT_to_POST-1').value); 
            $('#id_COMMENT_to_POST-1').val('');
        }
        "></textarea>
</td>

在 chrome 和 IE 中它可以工作,但在 Firefox 中,它最终会清除文本并在 textarea 中插入新行,因此不会出现占位符,因为 textarea 中有新行。

有什么建议么?

4

2 回答 2

1

试试 vanilla JavaScript 方法,让它保持简洁。

document.getElementById("text-area-id").value = '';

无法想象为什么它不起作用。

于 2013-08-24T00:15:59.400 回答
0

我解决了它,它不是 DOM 或任何东西,我只需要使用 settimeout 间隔,我不知道为什么,但可能 Web 浏览器在两个操作之间只需要几毫秒。这是新代码

<tr id="SC-@ep.POST_ID-Comment" style="background-color:white;">
<td colspan="2">
    <textarea id="id_COMMENT_to_POST-@ep.POST_ID" name="Comment" style="resize: none; vertical-align: middle;" placeholder="Leave a comment..." 
        onkeydown="
        if (event.keyCode == 13 && !event.shiftKey) 
        {
            event.preventDefault();

            var post = document.getElementById('id_COMMENT_to_POST-@ep.POST_ID').value;

            $('#id_COMMENT_to_POST-@ep.POST_ID').val('');

            setTimeout(function () {
            NEW_COMMENT('commentsinnerhtml-@ep.POST_ID', '@ep.POST_ID', post);
            },100);
        }
        "></textarea>
</td>

于 2013-08-24T08:03:56.197 回答