21

ユーザーが編集権限を持っていない場合に無効にする必要があるコントロールがいくつかありますが、選択したオプション要素のテキスト全体を表示するのに十分な幅がない場合があります。その場合、ASP.NET と次のコードでツール ヒントを追加しました。

ddl.Attributes.Add("onmouseover", "this.title=this.options[this.selectedIndex].title")

これは、コントロールが有効になっている場合は機能しますが、無効になっている場合は機能しません。

マウスが選択要素の上にある場合、次のアラートは発生しません。

<select disabled="disabled" onmouseover="alert('hi');">
    <option>Disabled</option>
</select>

このフィドルを参照してください。

Q :コントロールのイベントを発生させることはできますか?onmouseoverdisabled

4

6 に答える 6

41

無効な要素はイベントを発生させません。たとえば、ユーザーはそれらをホバーしたりクリックしたりして、ポップオーバー (またはツールヒント) をトリガーすることはできません。ただし、無効な要素を a でラップし、DIV代わりにその要素で発生したイベントをリッスンすることができます。

于 2013-08-07T21:16:40.917 に答える
10

更新:このアプローチの深刻な制限については、 nathan william のコメントを参照してください。問題の領域をより明確に示すために、フィドルを更新しました。


@Diodeusの発言を拡張すると、jQueryを使用しコンテナを自動的に作成し、div無効な要素をラップできます。

  1. :disabledセレクターを使用して、無効になっているすべての要素を検索します。
  2. 次に.wrap()、関数コールバックでメソッドを呼び出します
  3. を使用thisして、セット内の現在の要素を参照できます。
  4. .attr()メソッドを使用onmouseoverして親要素から値を取得し、同じ値を新しい div に適用します。
$(':disabled').wrap(function() {
    return '<div onmouseover="' + $(this).attr('onmouseover') + '" />';
});

jsFiddle でのデモ

于 2013-08-07T22:12:19.293 に答える