3

ここで面白い問題があります。

onchangeイベントがリンクされたテキストエリアがあります。次に、onclickイベントにリンクされたボタンがあります。

テキストエリアに配置されるテキストは、onchangeイベントがテキストエリアでトリガーされたときに処理されます。これは通常、テキストエリアの外側をクリックしたときに発生します。

私がしたことは次のとおりでした:

  1. textareaにテキストを入力しました。
  2. 入力した直後にボタンをクリックして、ボタンのonclickイベントをトリガーします
  3. 何も起こりませんが、ボタンをクリックするとテキストエリアのonchangeイベントがトリガーされますが、ボタン自体のonclickイベントはトリガーされません。

なんで?onchangeとonclickの両方がトリガーされることを期待していました。ボタンのクリックが「失われる」ことがないようにするために必要なことはありますか。最初のクリックでテキストエリアのonchangeが発生し、2回目のクリックでボタンのonclickがトリガーされるため、2回クリックする必要があることに気付きました。

以下のコードは例を示しています。以下のコードを試してください。テキストを入力し、そのボタンを直接クリックします。「textarea」ポップアップのみが表示されます。

<textarea onchange="processText();" name="mytext"></textarea>
<button onclick="processButton();">Hello</button>
<script language="Javascript">
  function processText()
  {
    alert( 'textarea');
  }

  function processButton()
  {
    alert( 'button');
  }
</script>
4

3 に答える 3

2

テキストエリアの onblur イベントとボタンの onclick イベントを処理する

于 2012-05-23T11:21:00.037 に答える
0

これを試して、イベントリスナーをコンポーネントに追加してください

document.getElementsByTagName("textarea")[0].addEventListener("change", function(){
    alert( 'textarea');
});

document.getElementsByTagName("button")[0].addEventListener("click", function(){
    alert( 'button');
});

Idが定義されている場合は、 getElementById()を使用します。

于 2015-07-16T05:21:37.063 に答える