Shopsystem ShopPilot Shoploesung Diskussionen und Infos zum Shopsystem ShopPilot
Willkommen Gast. Bitte einloggen oder registrieren.
Februar 08, 2012, 13:56:57

Einloggen mit Benutzername, Passwort und Sitzungslänge
Suche:     Erweiterte Suche
5208 Beiträge in 1408 Themen von 330 Mitglieder
Neuestes Mitglied: spraytool
* Übersicht Hilfe Login Registrieren
+  Diskussionen und Infos zum Shopsystem ShopPilot
|-+  ShopPilot
| |-+  SSP - Shop Server Pages
| | |-+  if Radio-Button checked
0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] 2 Drucken
Autor Thema: if Radio-Button checked  (Gelesen 6042 mal)
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« am: Juli 02, 2007, 13:57:34 »

Hallo,

Gibt es eine Möglichkeit, mit ssp abzufragen, ob ein Radio-Button ausgewählt ist?

Code:
<td><input name="test" type="radio" value="__lib::artikelnummer2__">
<input type="hidden" name="__lib::artikelnummer2__" value="__check::radio__" ></td>

Wird (Quelltext) so ersetzt
Code:
<td><input name="test" type="radio" value="a__4711">
<input type="hidden" name="a__4711" value="1" ></td>

value = "1"   ->  (Cross)Artikel wird in den WK gelegt
value = "0"   ->  (Cross)Artikel wird nicht in den WK gelegt

Die Funktion sollte ungefähr so ausschauen: ??

<!--spmacro:module(check)
sub radio {
my $out = "";
   if  ( Radio-Button == checked ) {
         my $out =  qq | 1 |:
       } else {
         my $out = qq | 0|;
     }
   main::mprint $out;
}
-->
 
Wenn ich mit meiner Überlegung richtig liege, sollte das funktionieren, aber dazu fehlt mir der blaue Codeteil       
Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #1 am: Juli 02, 2007, 14:05:59 »

Hallo dobra,

so sollte es gehen...

Code:
if (ssp::get_var_form("test") eq $ssp::undefined) {
    ## Es ist NICHTS ausgewählt
}

analog dazu

Code:
if (ssp::get_var_form("test") ne $ssp::undefined) {
    ## Es ist IRGENDWAS ausgewählt
}

und ausserdem

Code:
if (ssp::get_var_form("test") eq "a__4711") {
    ## Es ist GENAU der Eintrag mit value="a__4711" ausgewählt
}
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #2 am: Juli 02, 2007, 14:33:04 »

Hallo ahe,

Danke für die superschnelle Antwort.

Habe es mit allen 3 Versionen versucht - funktioniert aber nicht...

Habe da scheinbar einen Gedankenfehler gemacht?
value = "__check::radio__" wird beim absenden (mit <form method="post" action="__xformcart__">) nicht ersetzt.

Nachtrag: 

mit
my $x = ssp::get_var_form("test");
main::mprint &x
wird im WK mit __check::radio__  die Artikelnr.  (z.B. a__4564 ) ausgegeben
Das funktioniert also

Aber eq $ssp::undefined  und ne $ssp::undefined wird ignoriert
eq "__lib::artikelnummer2__"  (würde "übersetzt" doch wenn a__4564 == a__4564 heißen ??
« Letzte Änderung: Juli 02, 2007, 15:07:46 von dobra » Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #3 am: Juli 02, 2007, 15:05:36 »

Wie sieht denn Ihr momentaner SSP-Code und HTML-Code aus?
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #4 am: Juli 02, 2007, 15:20:04 »

@ ahe

mail unterwegs
Gespeichert

dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #5 am: Juli 02, 2007, 18:44:58 »

offensichtlich habe ich da wirklich einen Gedankenfehler gemacht  Cry

ohne "my" innerhalb der if-Bedingung wird  value="__check::radio__"  ersetzt
ABER auf der Detailseite -> also bei ALLEN Positionen value="0" da ja beim laden noch nichts ausgewählt ist.
Beim Absenden (erst da sollte es ja ersetzt werden) wird dann auch bei allen Artikeln dieses "0" gesendet (egal ob etwas ausgewählt ist oder nicht)

Wie kann ich es machen, daß value="__check::radio__" erst NACH dem absenden (also im WK) ersetzt wird?

Ich vermute mal, daß ich dazu eine clientseitige JS-Abfrage brauche?
<input type="radio" .... onclick=checkedon()>
Aber wie müßte die checkedon() - Funktion ausschauen, damit - wenn der Radiobutton ausgewählt ist - das value bei type="hidden" von "0" auf "1" gesetzt wird?
irgendwie mit inertHTML und mit <div id="testirgendwas"></div> die ganze Zeile <input type="hidden" name="__lib::artikelnummer2__" value="1" > einfügen?
Allerdings müßte die Zweile ja, wenn dann doch ein anderer Artikel ausgewählt wird, wieder entfernt werden...

...ein softwareseitiges __wkradio__ (s.Wunschliste) wäre soooooo schön und einfach ..........  Roll Eyes

« Letzte Änderung: Juli 03, 2007, 10:04:57 von dobra » Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #6 am: Juli 03, 2007, 10:21:17 »

Ich vermute mal, daß ich dazu eine clientseitige JS-Abfrage brauche?
<input type="radio" .... onclick=checkedon()>
Aber wie müßte die checkedon() - Funktion ausschauen, damit - wenn der Radiobutton ausgewählt ist - das value bei type="hidden" von "0" auf "1" gesetzt wird?
irgendwie mit inertHTML und mit <div id="testirgendwas"></div> die ganze Zeile <input type="hidden" name="__lib::artikelnummer2__" value="1" > einfügen?
Vorausgesetzt das hidden Input würde sein
Code:
<input type="hidden" name="testitem" id="testitem" value="0">
Das könnten Sie mittels JS so ändern
Code:
document.getElementById('testitem').value = "neuer Wert";
ändern.
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #7 am: Juli 03, 2007, 10:43:14 »

Hallo ahe,

Hab's mal so vesucht:

in .js Datei

function checked()
{
document.getElementById('__lib::artikelnummer2__').value = "1";
}

(und dann auch versuchsweise noch mit ['__lib::artikelnummer2__'])

in cross.txt

   <tr>
      <td><input name="test" type="radio" value="__lib::artikelnummer2__" onclick="checked(this);">
      <input type="hidden" name="__lib::artikelnummer2__" id="__lib::artikelnummer2__" value="0" ></td>
   </tr>

wird im Quelltext so geschrieben

      <td><input name="test" type="radio" value="a__4542" onclick="checked(this);">
      <input type="hidden" name="a__4542" id="a__4542" value="0" ></td>

Aber wenn ich auf einen Radiobutton klicke, bekomme ich die Fehlermeldung:
"Das Objekt unterstützt diese Aktion nicht"

Was habe ich falsch gemacht?
« Letzte Änderung: Juli 03, 2007, 12:52:14 von dobra » Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #8 am: Juli 03, 2007, 13:30:01 »

Gibt es auf der Seite noch ein zweites Element mit id="a__4542"?
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #9 am: Juli 03, 2007, 13:33:43 »

nein

je nur 1x  name="a__4542"
              value="a__4542"
              und id="a__4542"
Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #10 am: Juli 03, 2007, 13:39:50 »

Nennen Sie die Funktion mal mychecked Wink
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #11 am: Juli 03, 2007, 14:08:31 »

jetzt sagt er
" 'document.getElementById(...)' ist Null oder kein Objekt "

function mychecked()
{
document.getElementById('__lib::artikelnummer2__').value = "1";
}

das __lib::artikelnummer2__ wird also zwar im Quelltext richtig ersetzt, aber nicht in JS

.......  was tun???
Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #12 am: Juli 03, 2007, 14:19:38 »

Das muss gehen  Grin
Beim Aufbau der Seite im Browser werden von ShopPilot alle Identifier ersetzt.
Da Sie erst nach dem Aufbau der Seite auf den Button klicken können muss zu diesem Zeitpunkt auch schon der Identifier (auch in JS) ersetzt sein.

Lassen Sie sich doch in der Funktion mal mit alert('__lib::artikelnummer2__'); ausgeben welche Id schlussendlich beim Klicken benutzt wird.
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #13 am: Juli 03, 2007, 14:41:03 »

alert Ausgabe

"__lib::artikelnummer2__"

wird also doch nicht ersetzt  Huh
Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #14 am: Juli 03, 2007, 14:54:39 »

Ich habe es nun mal in einem Testshop (Vorlage der Startseite) nachgebaut.
Alles funktioniert bestens... Im IE 7 und im FF.
Die Ausgaben der alerts sind (im FF)
1. [object HTMLInputElement]
2. 1

Code:
<!--spmacro:module(lib)
sub artikelnummer2 {
    main::mprint("testitem");
    return 'noinc';
}
-->                       

<script type="text/javascript">
    function mychecked() {
        var myElem = document.getElementById('__lib::artikelnummer2__');
        alert(myElem);
        myElem.value = "1";
        alert(myElem.value);
    }
</script>

<input name="test" type="radio" value="__lib::artikelnummer2__" onclick="mychecked(this);">
<input type="hidden" name="__lib::artikelnummer2__" id="__lib::artikelnummer2__" value="0">
Gespeichert

MfG ahe
Seiten: [1] 2 Drucken 
« vorheriges nächstes »
Gehe zu:  

mysitelist Impressum Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS