我有一个textarea,用户可以在其中键入注释并按Enter键提交注释,然后应该清除textarea的文本并显示占位符,以便我使用此功能
<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中有一个新行。
有什么建议吗?
答案 0 :(得分:1)
尝试使用vanilla JavaScript方法,保持简洁。
document.getElementById("text-area-id").value = '';
无法想象为什么它不起作用。
答案 1 :(得分: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>