popup: {
[B] load : function (basketid){
var inhalt = document.getElementById("test_varSelect_"+basketid).options[document.getElementById("test_varSelect_"+basketid).options.selectedIndex].value;
if (inhalt!=0){
oxid.popup.setClass('wait','popup load on','on');
}else{
alert ("Bitte wählen Sie zuerst eine Größe für das Produkt aus.");
}
},[/B]
show : function(){ oxid.popup.setClass('popup','popup on','on');},
hide : function(id){ oxid.popup.setClass(id?id:'popup','popup','');},
setClass: function (id,pcl,mcl){
var _mk = document.getElementById('mask');
var _el = document.getElementById(id);
if(_mk && _el) {
_mk.className = mcl;
_el.className = pcl;
}
},
Der Browser lädt jedoch trotzdem das script. Müssen die funktionen show und hide auch abgefangen werden?
ich versteh nicht, warum es so nicht unterbunden wird?!
hat wohl was mit dem setclass zu tun. jedoch kenn ich mich mit JS noch zu wenig aus, dass ich das verstehe, was hier passiert.
kann mir da bitte jmd auf die sprünge helfen?
Vielen Dank!
Entschuldige meine unklare aussage.
das erste <option> (also [0] hat den value = 0 und beinhaltet als Text "Größe wählen…"
Diese soll nicht in den Warenkorb gelegt werden können. Das geht zwar sowieso nicht, aber die Aktion dafür soll trotzdem unterbunden werden, da die Seite neu geladen wird.
Hier wird die value des options[0] einer variable übergeben:
var inhalt = document.getElementById("test_varSelect_"+basketid).options[document.getElementById("test_varSelect_"+basketid).options.selectedIndex].value;
Wenn ich das richtig verstanden habe, willst Du das Submit des Forms nur zulassen, wenn der Inhalt der Select-Box nicht 0 ist.
Na ja, um mich in fremden Code einzuarbeiten fehlt mir auch ein wenig die Zeit.
Wenn das alert ausgeben wird, dies Info fehlt mir, sollte dies gehen.
Ohne zu testen…
popup: {
load : function (basketid){
var inhalt = document.getElementById("test_varSelect_"+basketid).options[document.getElementById("test_varSelect_"+basketid).options.selectedIndex].value;
if (inhalt!=0){
oxid.popup.setClass('wait','popup load on','on');
}else{
alert ("Bitte wählen Sie zuerst eine Größe für das Produkt aus.");
[B]return false;[/B]
}
},
show : function(){ oxid.popup.setClass('popup','popup on','on');},
hide : function(id){ oxid.popup.setClass(id?id:'popup','popup','');},
setClass: function (id,pcl,mcl){
var _mk = document.getElementById('mask');
var _el = document.getElementById(id);
if(_mk && _el) {
_mk.className = mcl;
_el.className = pcl;
}
},
Mit return false erreichst Du, dass das Formular nicht abgeschickt wird. Bzw. dass keine Aktion nach diesen Event (onsubmit) mehr ausgeführt wird.
Dies gilt nur, wenn der Submitbutton auch die popup.load() Funktion aufruft. Wenn nicht, musst du das return false auf ein entsprechendes Event legen.
Wenn Du weitergehende Hilfe erwartest, solltest Du evtl. eine HTML-Datei erstellen, mit der man ohne große Klimmzüge das Problem nachvollziehen kann.
HTML und JS reichen hier vollkommen aus, ist ja kein Shopproblem.
Uu. siehst Du beim erstellen dieser Datei schon selber, wo es klemmt.
Werde die Variante von avenger heute abend probieren, da es den vorteil der updatesicherheit hat.
Hab noch ein verständnis problem:
wird [B]onclick="oxid.popup.load(’[{$testid}]’);[/B] (bzw. ein submit allgemein) nur angestossen, wenn onsubmit=true ist? also das onsubmit unterdrückt die weiteren aktionen?
[QUOTE=racoon;15658]Hallo Ihr beiden (mal wieder),
vielen Dank erstmal!
Werde die Variante von avenger heute abend probieren, da es den vorteil der updatesicherheit hat.
Hab noch ein verständnis problem:
wird [B]onclick="oxid.popup.load(’[{$testid}]’);[/B] (bzw. ein submit allgemein) nur angestossen, wenn onsubmit=true ist? also das onsubmit unterdrückt die weiteren aktionen?[/QUOTE]
Normalerweise wir man “onsubmit=“return submit_function()”” in den form-Tag schreiben.
Wenn “submit_function” den Wert true zurückgibt, geht der submit weiter, sonst wird er abgebrochen.
also es funktioniert. hab den ansatz von avenger genommen.
aber auch danke an MBa!
Jedoch musste ich den Code von mir nehmen, da es mit der [B]this[/B] übergabe nicht funktioniert hat.
warum weiss ich nicht. hab zwar object form erhalten, doch ich wusste nicht, wie ich auf die elemente zugreifen kann.
[QUOTE=racoon;15757] Jedoch musste ich den Code von mir nehmen, da es mit der [B]this[/B] übergabe nicht funktioniert hat. [/QUOTE]
War natürlich auch Blödsinn, “this” an der Stelle ist natürlich die “form”…
Aber Du kannst das insofern effizienter machen, indem Du nicht “document.getElementById…” verwendest, sondern das “this” weiterhin übergibts (in der function den Parameter dann z.B. “this_form” nennen), sondern “this_form.getElementById…” .
Dann muss JS nicht den ganzen Dokumentenbaum durchsuchen, sondern nur den Zweig der “Form”…
Hi Avenger,
habs leider nicht hinbekommen. Hab der function beide variablen übergeben, aber mit dem form object hat er immer rumgemeckert. Ich versuchs bei gelegenheit noch mal.
Ansonsten bremst das den shop auch nicht wesentlich runter