J'ai besoin de désactiver un DIV et tout son contenu en utilisant Javascript. Je peux jurer que faire un simple
<div disabled="true">
travaillait pour moi auparavant, mais pour une raison quelconque, cela ne fonctionne plus. Je ne comprends pas pourquoi.
Dans IE10: le texte "Click Me" n'est pas grisé et le gestionnaire de clics fonctionne toujours.
J'ai vraiment besoin de ça pour IE10. Ci-dessous mon code. Merci d'avance.
<html>
<script>
function disableTest(){
document.getElementById("test").disabled = true;
var nodes = document.getElementById("test").getElementsByTagName('*');
for(var i = 0; i < nodes.length; i++){
nodes[i].disabled = true;
}
}
</script>
<body onload="disableTest();">
<div id="test">
<div onclick="alert('hello');">
Click Me
</div>
</div>
</body>
</html>
Essaye ça!
$("#test *").attr("disabled", "disabled").off('click');
Je ne vous vois pas utiliser jquery ci-dessus, mais vous l'avez répertorié comme une balise.
L'instruction css suivante désactive les événements de clic
pointer-events:none;
Je pense que les scripts en ligne sont difficiles à arrêter à la place, vous pouvez essayer avec ceci:
<div id="test">
<div>Click Me</div>
</div>
et script:
$(function () {
$('#test').children().click(function(){
alert('hello');
});
$('#test').children().off('click');
});
javascript pur pas jQuery
function sah() {
$("#div2").attr("disabled", "disabled").off('click');
var x1=$("#div2").hasClass("disabledDiv");
(x1==true)?$("#div2").removeClass("disabledDiv"):$("#div2").addClass("disabledDiv");
sah1(document.getElementById("div1"));
}
function sah1(el) {
try {
el.disabled = el.disabled ? false : true;
} catch (E) {}
if (el.childNodes && el.childNodes.length > 0) {
for (var x = 0; x < el.childNodes.length; x++) {
sah1(el.childNodes[x]);
}
}
}
#div2{
padding:5px 10px;
background-color:#777;
width:150px;
margin-bottom:20px;
}
.disabledDiv {
pointer-events: none;
opacity: 0.4;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div id="div1">
<div id="div2" onclick="alert('Hello')">Click me</div>
<input type="text" value="SAH Computer" />
<br />
<input type="button" value="SAH Computer" />
<br />
<input type="radio" name="sex" value="Male" />Male
<Br />
<input type="radio" name="sex" value="Female" />Female
<Br />
</div>
<Br />
<Br />
<input type="button" value="Click" onclick="sah()" />
Je n'ai aucune expérience avec cela, mais il semble que BlockUI est ce que vous recherchez. Essayez ça.
Vous ne pouvez pas utiliser "disable" pour désactiver un événement click. Je ne sais pas comment ou si cela fonctionnait dans IE6-9, mais cela ne fonctionnait pas sous Chrome et cela ne devrait pas fonctionner dans IE10 comme ça.
Vous pouvez également désactiver l'événement onclick en associant un événement qui annule:
;(function () {
function cancel () { return false; };
document.getElementById("test").disabled = true;
var nodes = document.getElementById("test").getElementsByTagName('*');
console.log(nodes);
for (var i = 0; i < nodes.length; i++) {
nodes[i].setAttribute('disabled', true);
nodes[i].onclick = cancel;
}
}());
De plus, la définition directe de "désactivé" sur un nœud n'ajoute pas nécessairement l'attribut, mais setAttribute ne le fait pas.