Heim  >  Artikel  >  Web-Frontend  >  jQuery ist nicht mit dem Problem lösenden Eingabeänderungsereignis „process_jquery“ kompatibel

jQuery ist nicht mit dem Problem lösenden Eingabeänderungsereignis „process_jquery“ kompatibel

WBOY
WBOYOriginal
2016-05-16 16:29:051375Durchsuche

Ein kürzlich entwickeltes Projekt erfordert, dass, nachdem der Benutzer Mengen in mehrere Eingabefelder in einem WEB-Formular eingegeben hat, die Summe der eingegebenen Mengen automatisch berechnet und im angegebenen Eingabefeld angezeigt wird. Diese Funktion ist einfach. Das heißt, Sie müssen nur die Summe im Onchange-Ereignis von INPUT berechnen und das Ergebnis dem angegebenen INPUT-Feld zuweisen. Der Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

$("input.syxcost").change(function(){
computeReceivedsyxcost();
}
function computeReceivedsyxcost(){ //Berechnen Sie die Summe
              var syxcost=0;
                   $("input.syxcost").each(function(){
              var cost=parseFloat($(this).val());
If (!isNaN(cost))
                       syxcost=syxcost cost;
              });
                  $("#receivedsyxcost").val(syxcost) //Zeige das Endergebnis
           }

Ich dachte, das würde das Problem lösen. In IE 9 habe ich jedoch festgestellt, dass das Änderungsereignis nicht sofort ausgelöst wird Viele Leute sagen, dass dieses Problem besteht und ich es aufgrund der Implementierung nicht selbst schreiben muss. Meine Idee ist: Wenn die Eingabe den Fokus erhält, holen Sie sich den aktuellen Wert und speichern Sie ihn im benutzerdefinierten Attribut Wenn INPUT den Fokus verliert, ermitteln Sie, ob der aktuelle WERT mit dem Wert im zuvor angepassten Attribut übereinstimmt. Wenn nicht, bedeutet dies, dass der WERT geändert wurde und geändert werden muss Andernfalls wird es ignoriert. Der Implementierungscode lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

$("input.syxcost").focus(function(){
                   $(this).attr("data-oval",$(this).val()); //Speichern Sie den aktuellen Wert im benutzerdefinierten Attribut
               }).blur(function(){
                   var oldVal=($(this).attr("data-oval") //Den Originalwert abrufen
              var newVal=($(this).val()); //Den aktuellen Wert abrufen
If (oldVal!=newVal)
                                               {
berechnenReceivedsyxcost(); //Wenn nicht gleich, berechnen Sie
                }
            });

Nach wiederholter Überprüfung wird es in allen Browsern normal angezeigt, wodurch das Kompatibilitätsproblem gelöst wird!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn