2016-10-20 1 views
0

Ich möchte pure Javascript (aufgrund der Anwendung Architechture) Click-Ereignis auf HTML-Seite deaktivieren.Deaktivieren Sie Click-Ereignis auf allen Steuerelementen mit Javascript

Ich versuchte

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

aber es öffnet sich immer noch meine wählen.

Ich habe select nur als Beispiel, ich möchte es für jede Kontrolle tun.

Hier ist Fiddle

aktualisieren Kann nicht pointer-events:none; benutzen, weil ich es in WPF Anwendung verwenden und leider nutzt es frustrierend Browser als IE bekannt.

Antwort

1

Fügen Sie einfach css, pointer-events: none, wenn Sie es Body-Element geben, wird jeder Klick deaktiviert.

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

Bitte führen Sie den Code-Schnipsel

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

Here is the fiddle

EDIT FÜR IE:

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

Oh, tut mir leid, aber ich habe es vergessen, wie WPF-Browser zu erwähnen, sollte nur mit IE in IE zu arbeiten. +1 für die Antwort though. – Imad

+0

Problem mit ID ist, ich muss die ID jedes Elements wissen. Wie ich in Frage gestellt habe, muss ich es für alle Elemente tun. – Imad

+0

Der click-Ereignis-Listener funktioniert irgendwie nicht nur für select, man kann für alle select-Tags die selbe Klasse nehmen und den 'getellementsbyclassName' darauf ausführen. – Sravan

1

Sie können ganz einfach das CSS durch erzielen

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

Ich muss den IE verwenden, der es nicht unterstützt. Danke für die Antwort. +1, weil es in anderen Szenarien hilfreich ist – Imad

+0

@Imad, überprüfen Sie bitte die aktualisierte Antwort. – Sravan

0

Weder die onSelect() noch onClick() Ereignisse werden von dem Tag unterstützt. Ersteres bezieht sich auf das Auswählen von Text (d. H. Durch Klicken + Ziehen über ein Textfeld) und kann nur mit den Tags und verwendet werden. Das Ereignis onClick() kann mit Tags verwendet werden - Sie suchen jedoch wahrscheinlich nach Funktionen, bei denen das onChange() - Ereignis und nicht onClick() am besten verwendet werden sollte.

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

Ich glaube, Sie viel Zeiger-Events versuchen: keine mit Stil Attribut

können Sie mehr versuchen, Antwort auf diese :) How to completely DISABLE any MOUSE CLICK

I denke du viel einfügen 1 Overlay-Element und bringen Sie es nach vorne Element auswählen :)

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

und verwenden Sie die folgende Javascript

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

Ich möchte diese Optionsliste nicht einmal anzeigen. vollständige Deaktivierung – Imad

Verwandte Themen