Le bouton html n'est pas cliqué sans être désactivé

Puisque IE (<8?) Ne me permet pas de modifier la couleur du texte d'un bouton désactivé, et présente une ombre horrible (effet gaufré), je souhaite imiter le comportement d'un bouton désactivé. Ce bouton sera désactivé s'il existe des erreurs d'entrée sur le formulaire.

Au lieu de désactiver, je peux changer la classe dans JS pour assombrir le bouton, etc. lorsque la validation du formulaire a lieu. Ce que je veux également faire, c'est aussi rendre l'élimination des règles pour que l'utilisateur ne puisse pas envoyer le formulaire. (Comment puis-je faire ceci?

Merci

IE10 + & Modern Browsers Answer

Cela ne résoudra pas votre problème puisque vous utilisez <IE10 , mais pour ceux qui utilisent des navigateurs modernes et pour répondre à la question initiale:

Le bouton html n'est pas cliqué sans être désactivé

… cela fonctionne simplement et avec élégance:

.no-click { pointer-events: none; } 

Ajoutez simplement cette classe à votre interface utilisateur:

 <button class="no-click"> 
 <form onSubmit="return validate(this)" 

Il suffit de renvoyer les faux pour arrêter la soumission

Vous pouvez ajouter la fonction dans la fenêtre.

 window.onload=function() { document.getElementsByTagName("form")[0]).onsubmit=function() { return validate(this); } } function validate(theForm) { // if not valid return false; // else return true; } 

Si vous souhaitez adhérer aux meilleures pratiques les plus récentes, vous utiliserez addEventListener ou attachEvent ou jQuery bind

Commentaire de @BrendanEich :

@mplungjan onclick of submit ne tombe que si un bouton; La forme onsubmit est clairement meilleure.

Rien n'est hors limites pour résoudre ce problème. Tout d'abord, réactivez votre bouton, puis utilisez Jquery, addClass que vous voulez (vous pouvez également supprimer l'ancienne classe aussi), puis ré-désactiver le bouton:

 $("#yourbuttonid").click(function(){ $(this).removeAttr("disabled").removeClass("classname").addClass("classname2").attr("disabled", "disabled"); }); 

Vous devez renvoyer les faux de l'événement onclick:

 <input type="submit" value="Submit" onclick="return test();" /> 

ou

 <input type="submit" value="Submit" onclick="return false;" /> 

REMARQUE: vous devez utiliser return dans le onclick.