onklick auf <tr> um Checkbox zu makieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • onklick auf <tr> um Checkbox zu makieren

    Hallo

    habe mir einer JS Funktion zum checken der einzelnen Boxen geschrieben:
    PHP-Code:
    function check_first_box(parent){
        var 
    parent.getElementsByTagName'input' )[0];

        if (
    f.checked) {
            
    f.checked false;
        }else{
            
    f.checked true;
        }

    Die ich so anwende:
    PHP-Code:
                            <tr class="TAB_info_content" onclick="check_first_box(this);">
                        <
    td>
                            <
    input type="checkbox" name="news_select_id[]" value="68"/>
                            <
    a href="" title="news 2007 visible"><img src="visible.gif" width="16" height="15" name="news 2007 bearbeiten" /></a>
                            <
    a href="" title="news 2007 bearbeiten"><img src="module/web_news/images/open.gif" width="16" height="15" name="news 2007 bearbeiten" /></a>

                        </
    td>
                        <
    td>news</td>
                        <
    td>Pressemitteilungen</td>
                        <
    td>Cook</td>
                        <
    td>25.04.2007</td>
    </
    tr
    Soweit so gut das Funktioniert.
    Mein Problem ist nun wenn ich versuche die Checkbox direkt zu
    aktivieren dann wird immer eine gegen Aktion von der Funktion ausgeführt und Sie wieder deaktiviert.

    Meine Frage ist nun wie ich das verhindern kann?

    Danke schon mal.

  • #2
    Re: onklick auf &lt;tr&gt; um Checkbox zu makieren

    Original geschrieben von MTCook
    habe mir einer JS Funktion zum checken der einzelnen Boxen geschrieben
    Wozu? Die funktionieren doch auch ohne sehr gut ...

    Die ich so anwende:
    Auch noch Links mit drin in der Zeile?
    Das macht's ja noch widersinniger, auf den Klick auf die gesamte Fläche mit Änderung der Checkbox zu reagieren.
    Mein Problem ist nun wenn ich versuche die Checkbox direkt zu aktivieren dann wird immer eine gegen Aktion von der Funktion ausgeführt und Sie wieder deaktiviert.
    Tja, Events "bubblen" nun mal.
    Meine Frage ist nun wie ich das verhindern kann?
    Unterbinde das bubblen des click-Events der Checkbox weiter nach oben zum TR hin - durch ein return false.
    Allerdings dürfte das dann eigentlich auch die Statusänderung der Checkobx unterbinden - da müsstest du dann also nochmal per Javascript eingreifen.

    Klingt ziemlich ungünstig, das ganze.

    Mal über die Verwendung eines normalen Labels mit beschreibendem Text zur Checkbox nachgedacht?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ich habe mir das so vorgestellt wie das in MYSQLAdmin
      umgesetzt ist. Doch leider habe ich nicht rausgefunden wie das dort
      umgesetzt ist.

      Die Links haben ganz andere Aufgaben.
      Mit dem auswählen der Checkboxen sind auf mehrere Datensätze gleiche Aktionen möglich.
      Im Prinzip ist es nur eine Kosmetische Sache die allerdings recht nützlich ist beim auswählen wegens der Übersicht.

      Kommentar


      • #4
        Original geschrieben von MTCook
        Die Links haben ganz andere Aufgaben.
        Na also - dann gibst es doch gar keinen Grund, dass ein Klick auf diese auch die Checkbox ändern sollte.
        Im Prinzip ist es nur eine Kosmetische Sache die allerdings recht nützlich ist beim auswählen wegens der Übersicht.
        Dann nutze Label - dafür sind sie gedacht.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Habe es jetzt versuch über Label zu lösen.
          Wenn ich jetzt eine Spalte als Label definiere kann ich nur direkt auf
          der Schrift das Element aktivieren.

          Wie kann ich das auf die ganze Zeile ausweiten?
          PHP-Code:
          <tr class="TAB_info_content">
                              <
          td>
                                  <
          input id="checkbox_row_79" type="checkbox" name="news_select_id[]" value="79"/>
                                  <
          a href="index.php?visible_id=79" title="test visible"><img src="module/web_news/images/visible.gif" width="16" height="15" name="test bearbeiten" /></a>
                                  <
          a href="index.php?news_id=79&amp;news=edit&amp;newsEdit=open" title="test bearbeiten"><img src="open.gif" width="16" height="15" name="test bearbeiten" /></a>
                              </
          td>
                              <
          th><label for="checkbox_row_79">test</label></th>

                              <
          td>Pressemitteilungen</td>
                              <
          td>dfgfdgfg</td>
                              <
          td>25.04.2007</td>
          </
          tr

          Kommentar


          • #6
            Ich habe das mal so gelöst, dass ich mit dem MouseDown-Event, das vorher eintritt, den Zustand merke, und diesen dann im onClick-Event ändere. Sicher nicht das eleganteste, aber mir fiel auch nichts besseres ein.

            PHP-Code:

            <table border="1">
                <
            tr onMouseDown="get_initial_state(this)" onClick="checkit(this);">
                    <
            td><input type="checkbox"></td>
                    <
            td>eins</td>
                </
            tr>
                <
            tr onMouseDown="get_initial_state(this)" onClick="checkit(this);">
                    <
            td><input type="checkbox"></td>
                    <
            td>zwei</td>
                </
            tr>
            </
            table>


            <
            script type="text/javascript" language="JavaScript1.5">
                
                var 
            init_state false;

                function 
            get_initial_state(element) {
                    
            init_state element.cells[0].firstChild.checked;
                }

                function 
            checkit(element) {
                    
            element.cells[0].firstChild.checked= ! init_state;
                }

            </
            script
            (das mit dem firstChild funzt im Mozilla nur, wenn kein Leerzeichen oder Umbruch zwischen <td> und <input.. ist, da diese sonst richtigerweise als Kindknoten angenommen werden).
            ich glaube

            Kommentar


            • #7
              Ich werds mal ausprobieren.
              Danke für den Tipp der wie ich finde recht gut ist.

              Obwohl ich mich frage wie das bei PHPMyAdmin gelöst wurde.
              Irgendwie auch mit LABEL aber ich finde nicht raus wie das
              auf die ganze Zeile der Tabelle ausgeweitet wurde.

              Kommentar

              Lädt...
              X