Andi: XSLT Checkbox

Hallo,

ich habe das online-Material durchforstet, aber nicht so richtig was zu meinem Problem gefunden. Ich programmiere derziet an einem xslt-sheet und möchte einfache Checkboxen einsetzten, um an Hand ihrer Auswahl Daten anzeigen zu lassen oder auch nicht.

Wie man eine Checkbox erstellt ist mir klar:
     <input type="checkbox" value="anzeigen"....../>
Ich bin noch ziehmlicher Neuling auf dem Gebiet. Wie kann ich feststellen ob der Haken gesetzt wurde und dieses in meinem Sheet dann auswerten?

MFG  Andi

  1. Hallo,

    Wie kann ich feststellen ob der Haken gesetzt wurde und dieses in meinem Sheet dann auswerten?

    Es ist immer wieder schön, wenn zwar eine Frage gestellt wird, aber dann kein eniziges brauchbars Info dazugegeben wird um helfen zu können.

    Also spielen wir wieder den Hellseher und versuchen wir dir zu Helfen in dem wir gemeinsam mit dir _erst_ herausfinden was du eigentlich meinst und möchtest und willst.

    Fall 1:
    Du hast eine XML-Datei, darin sind irgendwelche Daten für die du eine Checkbox mittels XSLT für die HTML-ausgabe erstellen willst.
    In deiem XML ist es auf die eine oder andere Art gekennzeichnet ob ein Element ausgewählt wurde oder nicht. Z.B. so:
    a)
       <element ausgewaehlt="ja">bla bla bla bla</element>
    oder so
    b)
      <element>
       <ausgewaehlt>ja</ausgewaehlt>
       <text>bla bla bla bla</text>
      <element>

    Wen du jetzt das mittels XSLT nach HTML umsetzen möchtes könnte das so aussehen:

    a)
    <xsl:template match="element">
     <input type="checkbox" value="anzeigen">
      <xsl:if test="@ausgewaehlt = 'ja'">
       <xsl:attribute name="checked">checked</xsl:attribute>
      </xsl:if>
     </input>
    </xsl:template>

    oder so:
    b)
    <xsl:template match="element">
     <input type="checkbox" value="anzeigen">
      <xsl:if test="ausgewaehlt = 'ja'">
       <xsl:attribute name="checked">checked</xsl:attribute>
      </xsl:if>
     </input>
    </xsl:template>

    Fall 2:
    Du hast überhapt keine Ahnung, wovon ich im Fall 1 gefaselt habe und alles was du möchtest ist, in der Webseite zu überprüfen, ob jemand die Checkbox ausgewählt hat oder nicht.
    Nun, dann hat deine Frage überhaupt nichts mit XSL zu tun und alles was du wissen willst findest um im SELFHTML
    http://selfhtml.teamone.de/javascript/objekte/htmlelemente.htm#input
     und http://selfhtml.teamone.de/javascript/index.htm

    Grüße
    Thomas

    1. Ich wollte eigentlich mit Hilfe einer Checkbox Tabellen einblenden bzw. wieder ausblenden. Also ist der Haken gesetzt wird sie ausgeblendet. MIt Radio-Buttons oder normalen Buttons geht das schon. Wollt es aber nun mit einem Check-Button realiseren, nur weiss absolut net wie ich das machen könnte. Darf ja nix in dem XML-File ändern.

      Gruß

      Andi

      1. Hallo,

        Ich wollte eigentlich mit Hilfe einer Checkbox Tabellen einblenden bzw. wieder ausblenden. Also ist der Haken gesetzt wird sie ausgeblendet. MIt Radio-Buttons oder normalen Buttons geht das schon. Wollt es aber nun mit einem Check-Button realiseren, nur weiss absolut net wie ich das machen könnte. Darf ja nix in dem XML-File ändern.

        Wir sind noch immer dort wo wir angefangen haben. Du sagst leider noch immer nichts womit ich etwas anfangen könnte.

        Du darfst am XML nicht ändern:
         - steht es denn überhaupt in diesem XML ob eine "Tabelle" eingeblendet werden darf oder nicht?

        Verarbeitest du dein XML serverseitig oder erst im Browser?

        Was geht mit Radibuttons?
        Hat das ganze überghaupt mit dem XML zu tun, oder ist das ein "Feature" der HTML-Seite?

        Ich habe das Gefühl, du hast ein reines HTML + JavaScript Problem.

        Grüße
        Thomas

        1. Hm, mein Problem ist folgendes:
          Ich habe ein xml-file, das ich per xslt im browser anzeigen lasse. An dem xml-file darf ich nix verändern.
          In meinem xslt-sheet habe ich <div id="...">...</div> blöcke, die ich vom Benutzer ein- bzw. ausblenden lassen kann. Dies geschieht zum beispiel über 2 Radio-Buttons :
          <input type="radio" name="..." onclick="...display='none"/>
          <input type="radio" name="..." onclick="...display='block'"/>
          <div id="...">
          ...
          </div>

          Jetzt möchte ich die 2 Radio-Buttons durch einen Check-Button erstzen. Wenn der Haken gesetzt ist soll zum Beispiel der div-Block net mehr angezeigt werden. Und nun weiß ich aber net wie ich das machen soll, da da ein onclick net funktionert.

          Verstehst du was ich mein?

          MFG

          Andi

          1. Hallo,

            Hm, mein Problem ist folgendes:
            Ich habe ein xml-file, das ich per xslt im browser anzeigen lasse. An dem xml-file darf ich nix verändern.
            In meinem xslt-sheet habe ich <div id="...">...</div> blöcke, die ich vom Benutzer ein- bzw. ausblenden lassen kann. Dies geschieht zum beispiel über 2 Radio-Buttons :
            <input type="radio" name="..." onclick="...display='none"/>
            <input type="radio" name="..." onclick="...display='block'"/>
            <div id="...">
            ...
            </div>

            So ;-) Jetzt ist alles klar.
            Du hast ein "stink normales" JavaScript Frage.

            Jetzt möchte ich die 2 Radio-Buttons durch einen Check-Button erstzen. Wenn der Haken gesetzt ist soll zum Beispiel der div-Block net mehr angezeigt werden. Und nun weiß ich aber net wie ich das machen soll, da da ein onclick net funktionert.

            Verstehst du was ich mein?

            Ja, jetzt schon ;-)
            Natürlich gibt es auch beim Checkboxen ein onClick.
            Du muss aber zusärtzlich überprüfen ob der Status der Checkbox "true" oder "false" ist.
            Das kannst machen in dem du es auf "checked = true" bzw. "checked = false" prüfst.

            Schau dir dazu das Beispiel unter http://selfhtml.teamone.de/javascript/objekte/elements.htm#checked an.

            Grüße
            Thomas

            1. Jepp, auf der Seite war ich auch schon, hab da aber nicht richtig durchgesehen...
              Im Nachhinein jedoch wird mir so einiges klar. So wie ich mir das dachte, kann es nicht gehen. Werd da mal etwas "rumtüfteln"...

              Vielen Dank für die Hilfe :o)

              Gruß

              Bernd

              1. <script type="text/javascript">
                    <![CDATA[
                        /* Ein kleines Script zum Testten */
                            function Weiter(){
                           if(checked == true)
                         test.style.display='none'
                           else if (checked == false)
                         test.style.display='block'
                       }
                        /* Ende des kleinen Scriptes */
                     ]]>
                </script>

                <input type="checkbox" name="testbox" value="testbox" onclick="Weiter()" checked="true"/>
                <br/>
                <div id="test">
                kleiner test
                </div>

                Wenn ich jetzt die Seite im Browser den Haken setzten will, kommt die Fehlermeldung:   'checked' undefinert.
                Hab es doch aber definert? Was mach ich noch falsch?

                MFG
                   Andi

                1. Hi,

                  function Weiter(){
                             if(checked == true)

                  Wo kommt checked hier her? Du mußt schon dazusagen, wessen checked-Eigenschaft ausgewertet werden soll.

                  test.style.display='none'

                  Was ist test an dieser Stelle? Meinst Du das Element mit der id "test"? Dann: document.getElementById("test").style.display

                  else if (checked == false)

                  das if hier ist überflüssig - wenn checked nicht true ist, ist es immer false.

                  test.style.display='block'

                  <input type="checkbox" name="testbox" value="testbox" onclick="Weiter()" checked="true"/>

                  Übergib der Funktion Weiter einen Parameter, der die checkbox referenziert (also z.B. this).
                  Diesen Parameter bzw. dessen checked-Eigenschaft mußt Du dann natürlich in der Funktion auswerten.
                  In HTML kennt das checked-Attribut nur den Wert "checked".
                  Also checked="checked" für das, was in Javascript dann als true interpretiert wird. Für false mußt Du das Attribut checked komplett weglassen.

                  cu,
                  Andreas

                  --
                  MudGuard? Siehe http://www.Mud-Guard.de/
                  Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                  1. Ok, danke für die Tips, habe es hinbekommen :o)

                    MFG

                    Andi

                2. Hallo,

                  Wenn ich jetzt die Seite im Browser den Haken setzten will, kommt die Fehlermeldung:   'checked' undefinert.
                  Hab es doch aber definert? Was mach ich noch falsch?

                  Hast du leider nicht definier. Du muss der Funktion schon einige Sachen mitgeben z.B. den Namen des Forumlars und den Namen der Checkbox.

                  <script type="text/javascript">
                      <![CDATA[
                    function Weiter(strFormName, strFieldName){
                     if(eval("document." + strFormName + "." + strFieldName + ".checked == true"))
                      test.style.display='none'
                     else if(eval("document." + strFormName + "." + strFieldName + ".checked == false"))
                      test.style.display='block'
                    }
                       ]]>
                  </script>

                  Dann muss du die strXXXX beim Aufruf der Funktion übergeben:
                  <input type="checkbox" name="testbox" value="testbox" onclick="Weiter('NameDeinesFormulars', this)" checked="true"/>

                  Wenn du nur ein Formular hast kannst du natürlich den Namen in der Funktion fix eintragen:

                  function Weiter(strFieldName)
                  if(eval("document.NameDeinesFormulars." + strFieldName + ".checked == true"))

                  onclick="Weiter(this)"

                  Grüße
                  Thomas

                  1. Hi,

                    function Weiter(strFormName, strFieldName){

                    Warum erst die Namen übergeben und nicht direkt die Checkbox?

                    if(eval("document." + strFormName + "." + strFieldName + ".checked == true"))

                    Und selbst wenn mit Namen, dann doch lieber

                    document.forms[strFormName].elements[strFieldName].checked

                    denn: eval is evil ;-)

                    else if(eval("document." + strFormName + "." + strFieldName + ".checked == false"))

                    Daß hier das if überflüssig ist, steht ja schon in meinem anderen Posting.

                    cu,
                    Andreas

                    --
                    MudGuard? Siehe http://www.Mud-Guard.de/
                    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                    1. Hallo Andreas,

                      denn: eval is evil ;-)

                      Warum?
                      Das hat mir noch nie wirklich jemand erklären können.

                      Im übrigen (im Gegnsatz zu X*L's) bin ich beim JavaScript sehr stark der Meinung: "Hauptsache es funktioniert(irgendwie)" ;-)

                      Grüße
                      Thomas

                      1. Hm, ich hab es jetzt so programmiert und es funktioniert?
                        Oder findet ihr da noch Fehler?

                        <script type="text/javascript">
                            <![CDATA[
                                function Weiter()
                                {
                               if(testbox.checked == true)
                                   test.style.display="none"
                               else
                                   test.style.display="block"
                           }
                            ]]>
                        </script>
                        <input type="checkbox" name="testbox" value="testbox" onclick="Weiter()" /> <br/>
                        <div id="test">
                         kleiner test
                        </div>

                        1. Oder findet ihr da noch Fehler?

                          Nö, an dem ist nix mehr auszusetzten, ist voll i.O. so!

                          Gruß

                          The Voice

                        2. Hi,

                          function Weiter()
                                  {
                                 if(testbox.checked == true)

                          An dieser Stelle sollte ein Browser die erste Fehlermeldung ("objekt unterstützt diese Methode nicht" oder "unbekanntes objekt testbox" oder ähnliches)

                          test.style.display="none"

                          Hier sollte ne ähnliche Meldung kommen (ersetze testbox durch test.

                          else
                                     test.style.display="block"

                          Hier auch nochmal.

                          Aber das hab ich ja schonmal geschrieben.

                          cu,
                          Andreas

                          --
                          MudGuard? Siehe http://www.Mud-Guard.de/
                          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                          1. Hallo,

                            An dieser Stelle sollte ein Browser die erste Fehlermeldung ("objekt unterstützt diese Methode nicht" oder "unbekanntes objekt testbox" oder ähnliches)

                            test.style.display="none"

                            Was mach ich da noch falsch? Wahrscheinlich fehlt mir da noch das nötgie Verständniss...

                            Ich hab es noch mal angeändert. Bei mir funktioniert es. Was ist denn der UNterschied zwischen Name und ID? Man kann doch ein Objekt über beides ansprechen? ODer seh ich da was falsch?

                            <script type="text/javascript">
                            <![CDATA[
                            /* JavaScript-Kommentar: jetzt folgt ein kleines Script */
                            function Weiter()
                            {
                            if(document.getElementById("testbox").checked == true)
                            document.getElementById("test").style.display="none"
                            else
                            document.getElementById("test").style.display="block"
                            }
                            /* und damit ist das Script auch schon zu ende */
                            ]]>
                            </script>
                            <input type="checkbox" id="testbox" value="testbox" onclick="Weiter()" />
                            <br/>
                            <div id="test">
                            kleiner test zum Ein- / Ausblenden
                            </div>

                            Sind hier jetzt noch Fehler drinn?

                            Grüße

                            Andi

                            1. Hallo,

                              Was mach ich da noch falsch?

                              Gar nichts. Es ist richtig.

                              Was ist denn der UNterschied zwischen Name und ID? Man kann doch ein Objekt über beides ansprechen? ODer seh ich da was falsch?

                              ID muss dokumentweit eindeutig sein, name nicht.
                              z.B. Du hast zwei Formulare in der Seite und in beiden hast du ein Eingabefeld das name="email" heisst.

                              Sind hier jetzt noch Fehler drinn?

                              Nein, keine.

                              Grüße
                              Thomas

                        3. Hallo,

                          Hm, ich hab es jetzt so programmiert und es funktioniert?

                          Warum fragst du das uns? Du hast es doch programmiert, muss also du wissen ob es bei dir funktioniert. ;-)

                          Oder findet ihr da noch Fehler?
                                 if(testbox.checked == true)

                          Ich würe trozdem mit if(document.getElementById("test").checked == true) arbeiten.

                          Grüße
                          Thomas