2009-06-11 10 views
0

J'ai un contrôle formView asp.net et je veux que les boutons Update/Cancel soient désactivés jusqu'à ce que l'utilisateur fasse une modification et j'ai essayé d'utiliser jquery pour cela. Le code suivant fonctionne dans FireFox et fonctionne dans IE lorsque le formulaire est ouvert en mode insertion. Cependant, si le formulaire est ouvert en mode d'édition (dans IE), et donc rempli lorsque la page s'ouvre, les boutons sont désactivés pendant une fraction de seconde mais sont ensuite réactivés.JQuery Change() fonction IE problème

C'est ce que j'utilise actuellement.

// Handle the document.ready event: 
    $(document).ready(function() { 

     // Disable the save button 
     $("input.button") 
      .attr("disabled", "disabled") 
      .removeClass("button") 
      .addClass("button-disabled"); 

     // Hook up event handler to enable save button when a change is made 
     $("input").change(function() { 
      $("input.button-disabled") 
       .removeAttr("disabled") 
       .removeClass("button-disabled") 
       .addClass("button"); 
     }); 
     // Hook up the cancel confirmation dialog 
     $(".cancelEdit").click(function() { 
      showCancelConfirmation($(this)); 
      return false; 
     }); 
    }) 

J'ai changé le code de gestionnaire d'événements permet de

$("input").bind("keypress", function() { 
      $("input.button-disabled") 
       .removeAttr("disabled") 
       .removeClass("button-disabled") 
       .addClass("button"); 
     }); 

qui a résolu le problème momentanément, car les boutons sont désactivés jusqu'à ce que l'utilisateur entre un texte. Le problème que j'ai avec cette méthode cependant est que les boutons ne sont pas activés si l'utilisateur supprime du texte (IE seulement encore), et j'utilise également le calendrier AJAX Toolkit et les boutons ne sont pas activés quand une date est modifiée. Je sais que je peux utiliser le mot-clé 'clic' dans la fonction pour activer les boutons dès qu'un champ est cliqué, mais cela n'aide pas avec le problème d'entrée de calendrier ajax.

Des idées sur la façon dont je peux résoudre ce problème?

Merci à l'avance

Répondre

1

Ok, je triés celui-ci en fixant le CssClass pour les boîtes d'entrée à la chaîne d'entrée, et en utilisant le keydown et changer les arguments - keydown active les boutons si suppression est pressé et changer Active les boutons si une modification est apportée - y compris si une modification est effectuée via le calendrier du toolkit ajax.

$("input.input-box-webform").bind("keydown change", function() { 
      $("input.button-disabled") 
       .removeAttr("disabled") 
       .removeClass("button-disabled") 
       .addClass("button"); 
     });