Hallo,
ich habe Probleme mit meiner Bestellseite. Vorab ein paar Infos zur Seite. Die Seite basiert auf ASP .NET MVC. In dem "View", der die Bestelloberfläche selbst repräsentiert kann ein Formular beliebig, durch den User, erweitert werden. Eine Limitierung ist bislang nicht geplant. Am Ende einer Bestellung können gut 1000 Input-Elemente auf der Seite enthalten sein.
Die HTML-Elemente werden mit JQuery-Befehlen hinzugefügt.
Zu Problem 1:
Die verarbeitungszeit des Browsers wird sehr träge, je länger das Formular wird. Angenommen es befinden sich 1000 Input-Elemente auf der Seite und der User löscht das erste, dann wird über eine Javascript-Funktion alle nachfolgenden IDs, Namen und weitere HTML-Attributbenennungen aktualisiert. Dies erfolgt wieder über JQuery. Bei 1000 Input-Elementen habe ich ca. 10 Sekunden gemessen, bis das letzte Element aktualisiert wurde.
Die Struktor der Aktualisierungsmethode sieht ungefähr so aus:
In den for-Schleifen befinden sich meine Jquery-Befehle, die die HMTL-Elemente entsprechend aktualisieren.
Gibt es eine Möglichkeit, dass ich alle Befehle innerhalb der update-Methode in eine Art Transaktion packe, die dann am Ende der Funktion mit einem Mal abgearbeitet werden? Dann müsste sich der DOM-Baum nicht ständig, während des Schleifendurchlaufes, verändern (Ich vermute, dass das die Ursache für die Verzögerung ist).
Gibt's sowas, oder etwas ähnliches, in Javascript/Jquery?
Zu Problem 2:
Wenn die Bestellung abgeschickt wird, soll sich das Icon der Maus verändern, nachdem auf den Button geklickt wurde, welcher mit einer Funktion hinterlegt ist, die die Eingaben validiert. Die Validierung beansprucht etwas Zeit.
Nun ist es so, dass der Browser scheinbar die Validierung mit einer höheren Priorität behandelt, als meine Funktion, die den Cursor ändert.
Nachdem auf den Button geklickt wurde, dauert es kurz und anschließend erhalte ich die Validierungs-Messages. Eine Änderung des Mauszeigers ist nur kurz sichtbar, wenn überhaupt. Jedoch nicht wie gewollt, während der kurzen Dauer, die die Validierung verursacht.
Kann mir jemand bei diesen Problemen weiterhelfen?
Vielen Dank schonmal vorab!
MfG Zephyro
ich habe Probleme mit meiner Bestellseite. Vorab ein paar Infos zur Seite. Die Seite basiert auf ASP .NET MVC. In dem "View", der die Bestelloberfläche selbst repräsentiert kann ein Formular beliebig, durch den User, erweitert werden. Eine Limitierung ist bislang nicht geplant. Am Ende einer Bestellung können gut 1000 Input-Elemente auf der Seite enthalten sein.
Die HTML-Elemente werden mit JQuery-Befehlen hinzugefügt.
Zu Problem 1:
Die verarbeitungszeit des Browsers wird sehr träge, je länger das Formular wird. Angenommen es befinden sich 1000 Input-Elemente auf der Seite und der User löscht das erste, dann wird über eine Javascript-Funktion alle nachfolgenden IDs, Namen und weitere HTML-Attributbenennungen aktualisiert. Dies erfolgt wieder über JQuery. Bei 1000 Input-Elementen habe ich ca. 10 Sekunden gemessen, bis das letzte Element aktualisiert wurde.
Die Struktor der Aktualisierungsmethode sieht ungefähr so aus:
Code:
function update(param1)(){
for(){ // zählt bis 100 bei 1000 Elementen, da die Input-Elemente blockweise mit 10 angesprochen werden
for(){} // Die inneren Schleifen zählen bis max. 10
for(){}
for(){}
for(){}
}
}
Gibt es eine Möglichkeit, dass ich alle Befehle innerhalb der update-Methode in eine Art Transaktion packe, die dann am Ende der Funktion mit einem Mal abgearbeitet werden? Dann müsste sich der DOM-Baum nicht ständig, während des Schleifendurchlaufes, verändern (Ich vermute, dass das die Ursache für die Verzögerung ist).
Gibt's sowas, oder etwas ähnliches, in Javascript/Jquery?
Zu Problem 2:
Wenn die Bestellung abgeschickt wird, soll sich das Icon der Maus verändern, nachdem auf den Button geklickt wurde, welcher mit einer Funktion hinterlegt ist, die die Eingaben validiert. Die Validierung beansprucht etwas Zeit.
Nun ist es so, dass der Browser scheinbar die Validierung mit einer höheren Priorität behandelt, als meine Funktion, die den Cursor ändert.
Code:
$("#cart").click(function () {
if(setCursor("wait"))
{
$.validator.unobtrusive.parse(form);
var isValid = $("#form").validate().form();
if(isValid){
// Do some Stuff!
}
}
});
Nachdem auf den Button geklickt wurde, dauert es kurz und anschließend erhalte ich die Validierungs-Messages. Eine Änderung des Mauszeigers ist nur kurz sichtbar, wenn überhaupt. Jedoch nicht wie gewollt, während der kurzen Dauer, die die Validierung verursacht.
Kann mir jemand bei diesen Problemen weiterhelfen?
Vielen Dank schonmal vorab!
MfG Zephyro
Zuletzt bearbeitet: