1

無効にしたフォーム要素(input、textarea、...)が右クリックアクション(oncontextmenu属性)に反応しないという問題があります。フォーム要素が有効になっている場合、すべてが正常に機能します。次の擬似コードを検討してください。

<div id="test" oncontextmenu="someFunction()">
  <input id="textbox" type="text" disabled="disabled">
  SOME_PADDING
  <input id="calendar" type="image" disabled="disabled">
</div>

本当の問題は、ChromeとFirefoxでは機能しません、IE8とOperaでは機能することです。

ChromeまたはFirefoxのテキストボックスまたはカレンダー要素を右クリックしても、何も起こりません。要素(SOME_PADDING)の間をクリックすると、右クリックメニューが表示されます。

したがって、無効にされたフォームでの右クリックアクションはChromeとFirefoxでは機能しないようです。誰かが以前に同様の行動を経験したことがありますか?

前もって感謝します!
Stijn

編集:Pekkaが述べたように、右クリックに反応しない無効化されたフォーム要素は理にかなっています。本当の問題は、Firefox / Chromeで無効になっているフォーム要素をクリックしたときに、周囲のdivのoncontextmenu属性が適切に反応しないことのようです。

EDIT2:オンラインの例はここにあります:http://jsbin.com/isite4/6-これはIE8を除くすべてで機能します。IEを正常に動作させるために提案された回避策はありますか?

4

3 に答える 3

4

うーん、面白い。これまで見たことがない。ただし、コンテキストメニューを非表示にすることは完全に間違っているわけではないと主張することもできます。W3Cには、無効にされたコントロールについて次のように書かれています。

  • 無効にされたコントロールはフォーカスを受け取りません。
  • タブナビゲーションでは、無効になっているコントロールはスキップされます。
  • 無効にしたコントロールは成功しません。

フォーカスを受け取ることについて:

HTMLドキュメントでは、要素がアクティブになり、そのタスクを実行するために、ユーザーからフォーカスを受け取る必要があります。

したがって、ChromeとFFによって示される動作は、IMOに意味があります。

それを回避する方法のアイデア:

  • 入力要素の上に透明な要素を置き、そこでイベントをキャッチします(yuck)

  • 無効にされた要素をコンテナの後ろに配置するために使用z-index: -1します-これがブラウザ間で機能するかどうかはわかりませんが

  • 属性を操作しないでくださいdisabled。ただし、CSSスタイルとjQueryの回避策を使用して、これらのコントロールの値が送信されないようにしてください。

後者が最良の提案だと思います。

于 2010-11-10T13:39:44.340 に答える
1

簡単なアプローチではないように思われるため、回避策を選択しました。通常の左クリックに反応する、無効になっているフォーム要素の上に画像を追加することにしました。

于 2010-11-24T14:32:44.920 に答える
0

私が使用したより簡単な方法があります。それは、要素を無効にするのではなく、読み取り専用にすることでした。「外観」がユーザーを混乱させる可能性がある場合は、「無効」の色を要素のcssと一致させてください。私はそれが元のポスターとは関係がないことを知っていますが、探しに来る他の誰もが利益を得るかもしれません。

于 2014-01-06T01:55:38.230 に答える