1

openjs.comのショートカット処理(1)を使用して、htmlフォームのEnterキーを無効にしています。ただし、これらのフォームのtextareas内で、Enterキーを押して通常のCR-LFペアを発行します(これはユーザーが期待しているためです)。

現時点では、次のようなフォーム/入力構造があると仮定しています。

<form id="f1">
 <fieldset>
  <input>
  <textarea id="f2"> ...

次のスクリプトが実行されます。

shortcut.add('Return',  function () { /*empty*/   },
 { 'type':'keydown', 'disable_in_input':false,'propagate':true,  
   'target':document.getElementById('f1')});"

これにより、Enterキーが事実上無効になります。

次のコードを使用して、textareaで再度有効にしてみました。

shortcut.add(\"Enter\", function() { }, {'type':'keydown','propagate':false,
'disable_in_input':false, 'target':document.getElementById('f2') } );  

しかし、それは機能しません。このイベントの伝播の順序は何ですか?テキストエリアからバブルアップする必要がありますか、それともフォーム要素からバブルダウンする必要がありますか?

4

1 に答える 1

3

このライブラリが実際にこのように使用されることを意図していたようには見えません。ショートカットを追加すると、後で何をしても、ブラウザによるショートカットの処理が完全に無効になると推測するのは危険です。

あなたは実際に何を達成しようとしていますか?フォームが送信されないようにするだけの場合は、を呼び出すフォーム全体のsubmit イベントリスナーevent.preventDefault()を追加できます。

于 2009-08-23T21:33:34.310 に答える