2009-06-11 16 views
0

Ich habe ein asp.net Formview-Steuerelement und ich möchte die Update/Cancel-Schaltflächen deaktiviert werden, bis der Benutzer eine Änderung vornimmt und ich habe versucht, mit jquery dies zu tun. Der folgende Code funktioniert in FireFox und funktioniert in IE, wenn das Formular im Einfügemodus geöffnet wird. Wenn das Formular jedoch im Bearbeitungsmodus (im IE) geöffnet wird und daher beim Öffnen der Seite ausgefüllt wird, werden die Schaltflächen für einen Sekundenbruchteil deaktiviert, dann aber wieder aktiviert.JQuery Change() -Funktion IE-Problem

Dies ist, was ich derzeit verwende.

// 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; 
     }); 
    }) 

änderte ich den Event-Handler Code

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

, die das Problem vorübergehend lösen, ermöglichen, da die Tasten sind deaktiviert, bis der Benutzer Text eingibt. Das Problem, das ich mit dieser Methode habe, ist jedoch, dass die Schaltflächen nicht aktiviert sind, wenn der Benutzer etwas Text löscht (IE nur noch einmal), und ich verwende auch den AJAX Toolkit-Kalender und die Schaltflächen sind nicht aktiviert, wenn ein Datum geändert wird.

Ich weiß, dass ich das Schlüsselwort 'click' in der Funktion verwenden kann, um die Schaltflächen zu aktivieren, sobald ein Feld angeklickt wird, aber das hilft nicht bei der Ajax-Kalendereingabe.

Irgendwelche Ideen, wie ich dieses Problem lösen kann?

Vielen Dank im Voraus

Antwort

1

Ok, sortierte ich diesen durch die CssClass für die Eingabefelder an die Eingabekette befestigt und durch die keydown mit und Argumenten ändern - keydown die Tasten aktiviert, wenn Lösch gedrückt und aktiviert ändern die Schaltflächen, wenn eine Änderung vorgenommen wird - auch wenn eine Änderung über den Ajax Toolkit-Kalender vorgenommen wird.

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