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 では、テキストをクリアしてテキストエリアに新しい行を挿入するだけなので、テキストエリアに新しい行があるため、プレースホルダーは表示されません。

助言がありますか?

4

2 に答える 2

1

バニラの JavaScript アプローチを試してみてください。

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

なぜそれがうまくいかないのか想像できません。

于 2013-08-24T00:15:59.400 に答える
0

私はそれを解決しました、それはDOMなどではありませんでした.settimeout間隔を使用する必要がありました.理由はわかりませんが、おそらくWebブラウザは2つの操作の間に数ミリ秒必要でした. これが新しいコードです

<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 に答える