Autor Thema: if Radio-Button checked  (Gelesen 19805 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
if Radio-Button checked
« am: Juli 02, 2007, 13:57:34 »
Hallo,

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

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

Wird (Quelltext) so ersetzt
<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       

Linkback: https://www.shoppilot.net/pf/index.php?topic=893.0
mfG
dobra

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: if Radio-Button checked
« Antwort #1 am: Juli 02, 2007, 14:05:59 »
Hallo dobra,

so sollte es gehen...

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

analog dazu

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

und ausserdem

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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: if Radio-Button checked
« 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 »

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: if Radio-Button checked
« Antwort #3 am: Juli 02, 2007, 15:05:36 »
Wie sieht denn Ihr momentaner SSP-Code und HTML-Code aus?

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: if Radio-Button checked
« Antwort #4 am: Juli 02, 2007, 15:20:04 »
@ ahe

mail unterwegs

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: if Radio-Button checked
« Antwort #5 am: Juli 02, 2007, 18:44:58 »
offensichtlich habe ich da wirklich einen Gedankenfehler gemacht  :'(

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 ..........  ::)

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

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: if Radio-Button checked
« 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
<input type="hidden" name="testitem" id="testitem" value="0">Das könnten Sie mittels JS so ändern
document.getElementById('testitem').value = "neuer Wert";ändern.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: if Radio-Button checked
« 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 »

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: if Radio-Button checked
« Antwort #8 am: Juli 03, 2007, 13:30:01 »
Gibt es auf der Seite noch ein zweites Element mit id="a__4542"?

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: if Radio-Button checked
« Antwort #9 am: Juli 03, 2007, 13:33:43 »
nein

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

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: if Radio-Button checked
« Antwort #10 am: Juli 03, 2007, 13:39:50 »
Nennen Sie die Funktion mal mychecked ;)

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: if Radio-Button checked
« 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???

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: if Radio-Button checked
« Antwort #12 am: Juli 03, 2007, 14:19:38 »
Das muss gehen  ;D
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.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: if Radio-Button checked
« Antwort #13 am: Juli 03, 2007, 14:41:03 »
alert Ausgabe

"__lib::artikelnummer2__"

wird also doch nicht ersetzt  ???

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: if Radio-Button checked
« 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

<!--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">


xx
Artikel-Anzahl im Warenkorb mit +/- Button ändern

Begonnen von dobra

1 Antworten
5376 Aufrufe
Letzter Beitrag Dezember 13, 2014, 21:44:50
von dobra
xx
"I Like it"-Button auf dynamischen Seiten

Begonnen von Robi

2 Antworten
7448 Aufrufe
Letzter Beitrag Juli 11, 2011, 14:00:51
von admin