In den letzten zwei Tagen haben wir eine Funktion gemacht, die eine Echtzeitüberwachung des Textfeldeingangs erfordert, und wir haben das Übelkeitsproblem gestoßen, dass die chinesische Eingangsmethode das OnKeyUp-Ereignis nicht auslösen kann.
Die spezifische Manifestation ist wie folgt:
Beim Anhören eines Eingangsschlüsselereignisses kann die englische Eingangsmethode die Änderung des Textfeldwerts über das Schlüssel -Ereignis in Echtzeit erkennen. Wenn die Eingabemethode jedoch chinesisch wird, wird das Eingangsschlüsselereignis nicht normal ausgelöst. Dies ist die vorherige Art des Schreibens.
<html> <kopf> <script type = "text/javaScript" src = "// www.vevb.com/static/js/jquery-1.4.min.js"> </script> </head> <body> <p> Verwenden Sie KeyUp-Ereignisse, um Textbox-Inhalt zu erkennen: </p> <p> <p> <input type = "text". autoComplete = "off"/> <span id = "keyUp_s"> </span> <script type = "text/javaScript"> $ ('#keyUp_i'). Bind ('keyUp', function () {$ ('#keyup_s'). text ($ (this) .val ();Wie Sie sehen können, begegnet dieses Schreiben dem Problem, dass Chinesen das Schlüsselereignis nicht auslösen können. Also suchte ich nach einer Lösung. Ich erinnerte mich, dass die Eingabeaufforderung der Suchleiste in Baidu kein Problem zu haben schien, also fing ich an, Baidus JS zu betrachten. Baidus JS ist hässlich ... Die Methode wird als Brief genannt, und schließlich stellte ich fest, dass sie wahrscheinlich Timeout als Timer verwendet hat, um die Änderung des Eingabefeldes regelmäßig zu überwachen. Nicht sehr zufrieden mit dieser Methode. Also suchte ich weiter nach einer besseren Lösung, also fand ich zwei Veranstaltungen: Oninput und On -Propertychange.
OnInput ist unter Firefox erhältlich, während On -Propertychange unter dem IE erhältlich ist. Es gibt einige Unterschiede zwischen den beiden Methoden.
EinInput kann nur Änderungen des Eigenschaftswerts erkennen, während On -Propertychange Änderungen in allen Eigenschaften erkennen kann, die den Wert enthalten. Also begann es sich dazu zu ändern.
<html><head><script type="text/javascript" src="//www.VeVB.COM/static/js/jquery-1.4.2.min.js"></script></head><body> <p> Use oninput and onpropertychange events to detect text box content: </p> <p> <input type="text" name="inputorp_i" id = "inputorp_i" autocplete = "off"/> <span id = "inputorp_s"> </span> <script type = "text/javaScript"> // Bestimmen Sie zuerst, ob der Browser ein bösartiger IE ist. Es gibt keine Möglichkeit, so etwas wie IE zu schreiben. var bind_name = 'input'; if (navigator.useragent.indexof ("msie")! = -1) {bind_name = 'PropertyChange'; } $ ('#InputorP_i'). Bind (Bind_name, function () {$ ('#InputorP_S'). Text ($ (this) .val ());}) </script> </p> </body> </html>Das Problem wurde so gelöst.