Ankündigung

Einklappen
Keine Ankündigung bisher.

AJAX Livesearsch TextBox mit onClick auffüllen

Einklappen

Neue Werbung 2019

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

  • #16
    FLEX64M
    Deine Zeile echo ... ist syntaktisch in Ordnung. Daher bleibe ich dabei, dass Du ein Zeichensatz-Problem hast.

    Kommentar


    • #17
      Zitat von FLEX64M Beitrag anzeigen
      hellbringer Und wie kann ich dan herausfinden auf welche Kassenname geklickt wurde? Ich habe ja dann z.b statt 100 ID's generierte 100 Klassennamen.
      Nein, warum? Ein Klassenname kann ja mehrmals verwendet werden.

      Kommentar


      • #18
        Schaue dir mal diesen Artikel an, der beschreibt die Ereignissteuerung und -weitergabe: https://molily.de/js/event-handling-effizient.html

        Kommentar


        • #19
          Hallo, vielen Dank für die Hilfe. Ich konnte das Problem lösen auch wenn es wahrscheinlich eine sauberere Lösung gebe.
          Ich habe zuerst alle lehrzeichen mit "_" ersetzt um den String richtig übergeben zu können.
          PHP-Code:
          if($Studentname!=str_replace(" ","",$Studentname) ){
            
          $stu str_replace(" ""_",$Studentname);
          }

          echo 
          "<span class='student' id='$Studentid' onclick=copy('".$stu."')>".$Studentname."</span><br>";

          Danach habe ich im Script wider alle "_" mit einem Lehrzeichen ersetzt.
          Code:
            function copy(name){
              if(name.match("_")){
                let nme = name.replace(/_/g," ")
                document.getElementById('searchText').value = nme;
              }
              else{
              document.getElementById('searchText').value = name;
            }
            }

          Kommentar


          • #20
            Nochmal: JavaScript-Code hat an der Stelle nichts verloren. Warum machst du es trotzdem? Das ist quasi eine Garantie für zukünftige Probleme. Du verschiebst nur den Aufwand auf später und baust dir potenzielle Fehlerquellen und Sicherheitslücken ein, die später mal schmerzen können.

            Kommentar


            • #21
              hellbringer ich hatte es versucht, aber schaffe es nicht den angecklickten Wert zu bekommen wenn das Script nicht direkt im PHP Code ist.

              Kommentar


              • #22
                Zitat von FLEX64M Beitrag anzeigen
                hellbringer ich hatte es versucht, aber schaffe es nicht den angecklickten Wert zu bekommen wenn das Script nicht direkt im PHP Code ist.
                Und später, wenn es dann wirklich zum Problem wird und erforderlich ist, schaffst du es dann? Oder beendest du das Ganze dann einfach und hakst es unter Misserfolg ab? Dann kannst du es eigentlich dann gleich jetzt sofort einstellen und dir die Mühe sparen.

                Kommentar


                • #23
                  hellbringer Ich hatte die Live Suche eigentlich so als kleines extra eingebaut, will deshalb auch nicht zuviel zeit damit verbringen. Ich muss aber sicherlich noch einiges in JS lernen. Die seite die die Live-Suche verwendet ist eigentlich auchschon fertig.
                  Es wäre aber nett wenn du mir vlt mit einem lleinen Code beispiel zeigen könntest wie ich es richtig machen soll. wäre dir sehr dankbar.

                  Kommentar


                  • #24
                    Beispiel für die Übernahme eines Textknotens aus einer Nodelist in ein Inputfeld.
                    PHP-Code:
                    <?php

                    $outputHTML 
                    null;

                    // 10 gleiche Div erzeugen
                    for ($i=1$i<=10$i++){
                        
                    $outputHTML .= '<div class="dialog" data="'.$i.'" title="Details">Ausgabe '$i.'</div>';
                    }
                    ?>

                    <!DOCTYPE html>
                    <html lang="de">
                    <head>
                    <meta charset="UTF-8">
                    <title>Select Child with Javascript</title>
                    <script>
                        document.addEventListener('DOMContentLoaded', function () {
                            document.getElementById('parentid').addEventListener('click', clickfrom, false);

                            function clickfrom (event) {
                                document.getElementById('livesearch').value = event.target.textContent;
                            }
                        );
                    </script>    
                    </head>
                    <body>
                        <form id="parentid">
                            <label for="suche">Suche</label><br>
                            <input id="livesearch" name="suche">
                            <button>suche</button>
                            <?= $outputHTML?>
                        </form>
                    </body>
                    </html>
                    Die Liste kommt bei dir vom AJAX Aufruf zurück und das hast du ja schon wie du sagst.

                    Zum Üben, hier noch mehr Möglichkeiten.
                    HTML-Code:
                    function clickfrom (event) {
                            var elementName = event.target.nodeName;
                            var p = event.target.parentElement;
                            var value = event.target.textContent;
                            var index = Array.prototype.indexOf.call(p.children, event.target);
                            console.log(p);
                            console.log(event.target);
                            console.log(elementName);
                            console.log(event.target.getAttribute('data'));
                            console.log(value);
                        }

                    Kommentar


                    • #25
                      Hallo protestix vielen Dank für die Hilfe. Hat super funktioniert. Ich habe noch was kleines geändert. Statt, dass parentid das formular ist ist bei mir parentid nur das div Element mit den ausgaben. Da sonst beim click in das Suchfeld der Text wider verschwindet.
                      Vielen Vielen Dank

                      Kommentar

                      Lädt...
                      X