2016-10-20 3 views
0

純粋なjavascript(アプリケーションアーキテクチャーのため)を使用してhtmlページのクリックイベントを無効にします。JavaScriptを使用しているすべてのコントロールでクリックイベントを無効にする

私は

document.body.addEventListener("click", function (evt) { evt.preventDefault(); }); 

を試してみましたが、それはまだ私の選択を開きます。

私は例としてselectを使用しました。私はすべてのコントロールのためにそれをしたいと思います。私はWPFアプリケーション内でそれを使用していますので、ここで

Fiddle

で更新pointer-events:none;を使用することはできませんし、悲しいことに、それはIEとして知られてイライラするブラウザを使用しています。

答えて

1

シンプルなCSSを追加すると、 pointer-events: noneとなります。ボディエレメントに与えると、evety clickは無効になります。

01:

<html> 
 
<body style="pointer-events: none"> 
 
<select> 
 
    <option>a</option> 
 
    <option>b</option> 
 
</select> 
 
</body> 
 
    </html>

IE用のコードスニペット

<select style="pointer-events: none"> 
    <option>a</option> 
    <option>b</option> 
</select> 

Here is the fiddle

EDITを実行してください

document.addEventListener("click",handler,true); 
 

 
function handler(e){ 
 
    e.stopPropagation(); 
 
    e.preventDefault(); 
 
} 
 

 
function cancelDropDown(ev) { 
 
    ev.preventDefault(); 
 
} 
 

 
var showMenu = document.getElementsByClassName("selectElement"); 
 

 
// ... 
 

 
for (var i = 0; i < showMenu.length; ++i) { 
 
    showMenu[i].addEventListener("mousedown", cancelDropDown, false); 
 
}
<select class="selectElement"> 
 
    <option>a</option> 
 
    <option>b</option> 
 
</select> 
 
<select class="selectElement"> 
 
    <option>c</option> 
 
    <option>d</option> 
 
</select> 
 
<select class="selectElement"> 
 
    <option>e</option> 
 
    <option>f</option> 
 
</select> 
 
<a onclick="alert('a')">asd</a>

Fiddle 2

+0

ああを使用して、申し訳ありませんが、私はそれだけでIEを使用してWPFのブラウザとしてIEで動作するはず言及するのを忘れてしまいました。答えthoghの+1。 – Imad

+0

IDの問題は、すべての要素のIDを知る必要があることです。問題に言及したように、私はすべての要素に対してそれをしなければなりません。 – Imad

+0

クリックイベントリスナーは何とかselectに対してのみ機能しません。同じクラスをすべてのselectタグに置き、 'getelementsbyclassName'を実行します。 – Sravan

1

あなたは簡単にonSelect()ものonClick()イベントは、タグによってサポートされているどちら

<select style="pointer-events:none;"> 
    <option>a</option> 
    <option>b</option> 
<select> 
+0

私はそれをサポートしていないIEを使用する必要があります。ご回答ありがとうございます。 +1は他のシナリオで役に立ちますので – Imad

+0

@Imad、更新された答えを確認してください。 – Sravan

0

CSSでこれを達成することができます。前者は、テキストを選択すること(つまり、テキストフィールドをクリックして+ドラッグすること)を意味するので、とタグでのみ使用できます。 onClick()イベントはタグと共に使用できますが、おそらくonClick()ではなくonChange()イベントを使用するのが最善の機能を探していることでしょう。

LINK:How to use onClick() or onSelect() on option tag in a JSP page?

私はあなたがずっとポインタのイベントを試すと思う:スタイル属性を持つなし

あなたはこのために多くの答えを試すことができます:) How to completely DISABLE any MOUSE CLICK

I 1つのオーバーレイ要素を多く挿入して、それをフロント選択要素に持ってきてください:

0
<select style="pointer-events: none" id="select" onchange="handleSelect()"> 
    <option value="01">a</option> 
    <option>b</option> 
    </select> 

と次のJavaScript

function handleSelect() { 
    if (this.value == '01') { 
     document.getElementById('select').disabled = true; 
    } else { 
    document.getElementById('select').disabled = false; 
      } 
         } 
+0

私はそのオプションリストを見せたくありません。無効にする。 – Imad

関連する問題