Shop Support News Archive - Shopbetreiber News -> Forum : ECB: css Klasse zu Formelement select hinzufügen?
Folgende css Klasse möchte ich dem Formelement select hinzufügen:
class="styled"
folgendes habe ich schon probiert und die darstellung funktioniert jedoch wird (this.form.submit) nicht mehr ausgeführt :wacko:
**$box_content=xtc_draw_form('currencies', xtc_href_link(basename($PHP_SELF), ' ', $request_type, false), 'get').xtc_draw_pull_down_menu('currency',**$curre ncies_array, $_SESSION['currency'],
' class="styled"; onChange="this.form.submit();" style="width: 100%"; ' )
. $hidden_get_variables . xtc_hide_session_id().'</form>';
Hier nochmal der string und wo ich das eingefügt habe:
' class="styled"; onChange="this.form.submit();" style="width: 100%"; ' )
Wo genau sollte ich die Klasse zufügen damit auch (this.form.submit) wieder funktioniert?
Danke für die Hilfe :smiley_emoticons_bravo2:
Rubbersale
27.10.2009, 11:34
Versuch doch einfach mal den Style aus der class="styled" hinten dran zu hängen, quasi so:
$box_content=xtc_draw_form('currencies', xtc_href_link(basename($PHP_SELF), ' ', $request_type, false), 'get').xtc_draw_pull_down_menu('currency',**$curre ncies_array, $_SESSION['currency'],
'onChange="this.form.submit();" style="width: 100%; weiter Styles"; ' )
Gruß
Ronny
@ Ronny
Habe ich auch schon versucht, leider war das auch nix :smiley_emoticons_helpnew:
Rubbersale
27.10.2009, 11:48
Es geht also um die Box "currencies".
So, dort ist ein kleiner aber entscheidende Syntaxfehler, es ist ein Semikolon zu viel:
Pack mal einfach das "width=100%" mit in deine class="style".
Und änder mal den Quellcode so ab:
**$box_content=xtc_draw_form('currencies', xtc_href_link(basename($PHP_SELF), '', $request_type, false), 'get').xtc_draw_pull_down_menu('currency',**$curre ncies_array, $_SESSION['currency'],'onChange="this.form.submit();"
class="styled"' ). $hidden_get_variables . xtc_hide_session_id().'</form>';
Gruß
Ronny
msslovi0
27.10.2009, 12:02
$box_content=xtc_draw_form('currencies', xtc_href_link(basename($PHP_SELF), '', $request_type, false), 'get').xtc_draw_pull_down_menu('currency', $currencies_array, $_SESSION['currency'], 'class="styled" onChange="this.form.submit();" style="width: 100%"') . $hidden_get_variables . xtc_hide_session_id().'</form>';
Wird funktionieren. Wenn nicht, Firebug anwerfen und nach dem Fehler suchen. Oder den onchange-Event gleich mit jQuery feuern.
Rubbersale
27.10.2009, 12:11
@msslovi0
So funktioniert es auch, mir ist erst beim zweiten Lesen der Syntaxfehler mit dem Semikolon aufgefallen.
Siehe hier:
**$box_content=xtc_draw_form('currencies', xtc_href_link(basename($PHP_SELF), ' ', $request_type, false), 'get').xtc_draw_pull_down_menu('currency',**$curre ncies_array, $_SESSION['currency'],
' class="styled"; onChange="this.form.submit();" style="width: 100%"; ' )
Danke Ronny
geht leider auch nicht, wenn ich nach dem wechsel enter drücke dann klappt es.
kann auch sein das es mit dem zu grundeliegenden javascript zu tun hat?
Rubbersale
27.10.2009, 12:16
Hast du den Quellcode von msslovi0 auch ausprobiert?
msslovi0
27.10.2009, 12:17
Du sollst auch nicht den Code von Ronny nehmen, sondern meinen :D
Mangels Währungen hab ich es in meinem Testshop mit der Herstellerbox getestet, was einwandfrei funktioniert. Und wie gesagt. Firebug ist gerade bei Javascript-Problemen dein Freund.
Habe nun alles probiert aber leider kein erfolg auch mit jquery gings nicht, liegt wohl definitv am java script:
''>ZITAT</div>choose: function() {
option = this.getElementsByTagName("option");
for(d = 0; d < option.length; d++) {
if(option[d].selected == true) {
document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
}
}
}[/b]
msslovi0
27.10.2009, 13:45
Meine Erfahrung sagt mir, dass dann im Firebug in rot entsprechende Meldungen im Log erscheinen, wenn das Javascript irgendwo knallt. Meine Glaskugel ist grad beim polieren, vielleicht kannst du die Fehlermeldungen also mal rauskramen.
SMT WebServices
27.10.2009, 15:34
''>ZITAT(canine @ Oct 27 2009, 13:24) 201257
Habe nun alles probiert aber leider kein erfolg auch mit jquery gings nicht, liegt wohl definitv am java script:
''>ZITATchoose: function() {
option = this.getElementsByTagName("option");
for(d = 0; d < option.length; d++) {
if(option[d].selected == true) {
document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
}
}
}[/b]
[/b][/quote]
also..
punkt 1:
wir sprechen bei allen xtc basierten shops von xhtml
daraus folgt: onchange nicht onChange
punkt 2
choose: function()
ist falsch
choose= function()
oder
function choose()
punkt 3 der inhalt der funktion kann nur funktionieren, wenn du nur 1 select auf der gesamten seite hast!!!
besser wäre
function choose(el){
**for(var i=0; i<el.options.length;i++){
**********if(el.options[i].selected == true) {
******doSomething();
****}
**}
}
und im onchange event dann choose(this);
alternativ zu der schleife mit der abfrage ob selected==true
wäre noch das element direkt anzusprechen...
function choose(el){
var selected=el.options[el.selectedIndex].value; // 0der eben .childNodes[0].nodeValue;
doSomething();
}
allerdings erschließt sich mir im ganzen nicht, was diese funktion tun soll
msslovi0
27.10.2009, 16:08
''>ZITAT(SMT WebServices @ Oct 27 2009, 15:34) 201280
wir sprechen bei allen xtc basierten shops von xhtml
daraus folgt: onchange nicht onChange[/b]
Sollte man mal in den entsprechenden ECB-Templates ändern. Alle mir bekannten Browser verhalten sich hier aber fehlertolerant. Und bevor der OP die Klasse hinzufügt geht's ja auch. Daran liegt es also mit Sicherheit nicht.
''>ZITAT</div>punkt 2
choose: function()
ist falsch[/b]
Wenn man sich in einem objektorientierten Kontext von Javascript bewegt ist lediglich die obige Aussage falsch.
Leider ist der Ausschnitt aus dem Javascript-Code absolut nichtssagend und für ohne jeglichen Bezug zum bisherigen Thread.
vBulletin® v3.8.4, Copyright ©2000-2012, Jelsoft Enterprises Ltd.