2008-12-05 16 views

Antwort

17

Das letzte Mal, als ich dieses Problem hatte, habe ich stattdessen das Ereignis onpropertychange für Internet Explorer verwendet. Ich lese darüber here on MSDN: Es ist der empfohlene Weg, um es zu umgehen.

+0

aber es scheint jedes Mal zu schießen, wenn der Benutzer eine Taste drückt. Mache ich hier etwas falsch? – Preets

+1

Nein, das funktioniert leider so. Aber ich habe gerade diese Ressource gefunden, die das Problem auf eine nette Art zu behandeln scheint: http://jehiah.cz/archive/onchange-and-autocomplete –

+2

Hinweis: onopropertychange scheint nicht mehr zuverlässig zumindest in IE9 zu arbeiten in meiner Prüfung. –

12

Ich habe diese lästige Funktion vor und meine Lösung zu der Zeit war, das onfocus-Ereignis zu verwenden, um den aktuellen Wert des Textfelds aufzuzeichnen, und dann das Onblur-Ereignis zu verwenden, um zu überprüfen, ob der aktuelle Wert jetzt dem Wert entspricht während onfocus gespeichert. Zum Beispiel

<input type="text" name="txtTest" value="" onfocus="this.originalvalue=this.value" onblur="if (this.value != this.originalvalue) alert('Test has changed')"/> 
+2

Das ist mir in der neuesten Version von Chrome passiert, also ist es eindeutig kein IE. Der Onblur hat mein Problem behoben. – DanO

+0

onblur auch mein Problem behoben, und arbeitete in IE 7,8,9 und 9 comp. Danke –

+2

Das hat gut für mich funktioniert - hier ist meine übersetzte Übersetzung: '$ (" # mein-feld "). Focus (funktion() {this.originalvalue = this.value}). Blur (funktion() {if (this. value! = this.originalvalue) alert ('changed')}); ' –

1

ich automatische Vervollständigung nur deaktivieren für die Textfelder muss ich Ereignis eine Textänderung abzufeuern

'Turn off Auto complete 
'(it needs to fire the text change event) 
txtYourTextBox.Attributes.Add("AutoComplete", "off") 

Nur, dass Last auf der Seite platzieren.

Alternativ können Sie das Attribut auf Ihrem Markup auf dem input Element oder die gesamte form hinzufügen:

<input type=text autocomplete=off> 

oder

<form autocomplete=off> 
+1

Das ist nicht wirklich eine Lösung. Autocomplete ist nützlich für Benutzer. Die Frage ist, wie man damit arbeitet, nicht um es zu deaktivieren. –

+1

Ich liebe es! Erzwingen Sie den Browser-Herstellern, uns diese Fluff-Funktionen, die sie hinzufügen möchten, besser zu unterstützen, damit wir mit ihnen arbeiten können ... andernfalls deaktivieren wir sie einfach! – eselk

+1

Dies ist eine Lösung, da es eine Funktion ausschaltet, die nicht funktioniert. Ich habe ein Formular, das jedes Feld validiert und wenn sie automatisch ausgefüllt werden, zeigen sie immer noch Fehler an. Ich würde lieber nicht AutoFill verwenden, dann habe ich eine kaputte Form. Es wäre schön, wenn Browser-Anbieter ein Ereignis auslösen würden, wenn Autofill passiert. –

4

Ich fand nur, dass using jQuery 1.4 to set change event dieses Problem lösen können. Es scheint die einfachste Lösung für dieses Problem zu sein, wenn Sie bereits mit jQuery vertraut sind.

+1

Ich benutze jquery 1.7.1 und die Auswahl des Autocomplete-Eintrags mit der Tab-Taste hat das Änderungsereignis nicht ausgelöst. Ich habe die Lösung von Tim C verwendet. –

6

Aufbauend auf Tim C Antwort, hier ist die einfache Jquery kam ich mit dieser auf einer Seite für alle Textfelder behandeln:

$("input[type=text]").bind("focus change",function(){ 
    this.previousvalue = this.value; 
}).blur(function(){ 
    if (this.previousvalue != this.value){ 
     $(this).change(); 
    } 
}) 

Wenn Sie nicht über Onchange mehrere Male Brennen ist es egal, Sie macht es einfacher:

$("input[type=text]").blur(function(){ 
    $(this).change(); 
}) 
1

fand ich, dass die folgende jQuery (v1.10 +) JavaScript funktioniert im Fall von Text ist automatisch vervollständigt für HTML-Texteingabefelder. Dies wurde getestet zuverlässig zumindest in Safari 6.1.1 auf Mac OS X 10.8.5 zu arbeiten, sondern auch in anderen kompatibelen Browsern funktionieren:

$("input:text[id=text_field_id]").bind("focus change keyup blur", function(event) { 
// handle text change here... 
}); 

Es schien die Zugabe des blur Ereignishandler war der Schlüssel zum Dies funktioniert, obwohl die anderen Event-Handler sicherstellen, dass der Event-Handler immer dann aufgerufen wird, wenn sich der Text ändert, entweder aufgrund einer Bearbeitung oder einer neuen Eingabe durch die Funktion zur automatischen Vervollständigung des Browsers.

Ersetzen Sie einfach den Code "input:text[id=text_field_id]" oben mit dem entsprechenden Selektor für Ihr Texteingabefeld gewünscht wird, oder das id Attribut bei Verwendung auf Ihr Gebiet zu beziehen, ersetzen text_field_id mit Ihrem id Attributwert des Textfelds.

Verwandte Themen