2

出力を処理するテキストエリアと、ユーザー入力を処理するテキストフィールドがあります。

フォーカスは完全に入力フィールドになります。フォームが送信されたとき (Enter キーが押されたとき)、ユーザー入力フィールドにテキストが追加されるようにすることはできません。ボタンがあり、これがクリックされた場合にのみ機能します。この問題を解決するにはどうすればよいですか?

以下は、Enterキーの送信のために試しているコードです。

<html>
<head>
<script type="text/javascript">
  function addtxt(input) {
    var obj=document.getElementById(input)
    var txt=document.createTextNode("blah blah")
    obj.appendChild(txt)
  }
</script>
</head>
<body>
<textarea id="textarea1"></textarea>
<br><input type="text" onSubmit="addtxt('textarea1');">
</body>
</html>
4

4 に答える 4

2

これは仕事をします。また、valueテキスト ノードをテキスト エリアに追加するのではなく、テキスト エリアのプロパティを処理する必要があります。ユーザーがテキスト エリアの値を変更した場合、後でその子ノードを変更しても効果はありません。テキストエリアを読み取り専用にしたい場合は、readonly属性を追加します: <textarea id="textarea1" readonly></textarea>.

<script type="text/javascript">
    function inputKeyDown(evt, input) {
        if (evt.keyCode == 13) {
            var textarea = document.getElementById("textarea1");
            textarea.value += "\n" + input.value;
            input.value = ""; // I'm guessing you may want this
            return false;
        }
    }
</script>

<input type="text" onkeydown="return inputKeyDown(event, this);">
于 2010-09-09T15:20:48.070 に答える
1

送信する代わりに、keypress イベントを使用してみてください。Enter キーが押されたことを検出し、データをコピーして、イベントをキャンセルします (フォームの送信を防ぐため)。フォームの送信を許可すると、既存のページがフォーム投稿の結果に置き換えられます。

現在のコードを変更する:

<html> 
<head> 
<script type="text/javascript"> 
  function addtxt(e,ctl,input) {
    var key;
    if (window.event) {
       key = event.keyCode;
    } else {
       key = e.which;
    }
    if (key == 13) {
       var obj=document.getElementById(input);
       var txt=document.createTextNode("blah blah");
       obj.appendChild(txt);
       ctl.value = '';
       return false;
    }
    return true;
  } 
</script> 
</head> 
<body> 
<textarea id="textarea1"></textarea> 
<br><input type="text" onkeypress="return addtxt(event,this,'textarea1');"> 
</body> 
</html>

あなたの究極の目標を達成するためのもっと良い方法があるかもしれないことに注意してください。また、jQuery/Dojo/Prototype のようなフレームワークの使用を検討し、目立たないようにハンドラーを追加します。

于 2010-09-09T15:00:17.903 に答える
0

フォーム要素を使用する

<form onsubmit="addtxt('textarea1')">
    <textarea id="textarea1"></textarea>
    <br><input type="text" />
</form>
于 2010-09-09T14:58:57.580 に答える
0

JQueryを使用できます

$('textarea#textarea1').keypress(function(e) {
    if (e.keyCode == 13) { // enter
       //do some stuff
    }
});
于 2010-09-09T15:04:01.770 に答える