Ankündigung

Einklappen
Keine Ankündigung bisher.

JavaScript auf mehere Inputs

Einklappen

Neue Werbung 2019

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

  • JavaScript auf mehere Inputs

    Hallo
    AHm ich weiß zwar nicht ob der Titel gut ist aber mir fehlt dort nix ein.

    Also mein problem ist ich lase per MYSQL auslesen wie viele Sorten an Sachen habe.

    Keks1
    Keks2
    Keks3
    ....

    und bei jeden keks gibt es unterschiedliche Optionen
    und so bau ich dann meine Formular auf zum ausfüllen
    nur habe ich dort ein problem und zwar habe ich z.b.

    die Option Port x mal stehen als input, wobei ja nur einer angezeigt wird.
    Beispiel:
    Kekse1:
    Option1:
    Port:
    Kekse2:
    Option1:
    Port:
    Kekse3:
    Option1:
    Port:

    Angezeigt wird Keks2 zum, beispiel
    Und alle anderen sind ausgeblendet


    Und ich lasse ja per JaveScript bzw jQuery eine überprüfung statt finden die sagt ob der Port frei oder belegt ist.

    PHP-Code:
    $(document).on('blur','#port', function() {
        var 
    lollloll = $("#port").val();
        if(
    lollloll.length 0)
        {
            $.
    post('ajax/grunz_check_port.php', {port:lollloll}, function(data) {
                if(
    data == 'ok') {
                    $(
    "#port").val(lollloll);
                    $(
    "#pinfo").removeClass("label label-success label-danger").addClass("label label-success").html("<span class=\"label label-success\">Port Frei!</span>").fadeTo(500);
                } else {
                    $(
    "#port").val(lollloll);
                    $(
    "#pinfo").removeClass("label label-success label-danger").addClass("label label-danger").html("<span class=\"label label-danger\">Port belegt!</span>").fadeTo(500);
                }
            });
        } else {
            $(
    "#pinfo").removeClass("label label-success label-important").html("");
        }
    }); 
    Und das Problem ist da ja die Input den namen port habe und von den anderen keksen nur ausgeblendet sind. Weiß warscheinlich das Javascript nicht ob er genau dieses input prüfen soll.
    Und somit zeigt er mir nicht an ob der Port frei oder belegt ist.

    Meine Frage: Wie kann ich das anstellen das es Funktioniert?

    Hoffe das es verständlich ist
    Wenn nicht bitte drunter schreiben dann versuche ich nochmal anderes zu erklären.


  • #2
    Zitat von slipknoter6 Beitrag anzeigen
    Hoffe das es verständlich ist
    Wenn nicht bitte drunter schreiben dann versuche ich nochmal anderes zu erklären.
    Also ich habe das Problem nicht verstanden.

    Vllt. hilft es, wenn du uns auch noch das dazugehörige HTML zeigst.
    mysql ist veraltet Mails senden: Ohne Probleme und ohne mail()
    PHP-Code:
    echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>'

    Kommentar


    • #3
      okay z.b das datum das geht auch nicht
      PHP-Code:
       <script>
      $(function() {
      $( 
      "#datemann" ).datepicker({ dateFormat"yy/mm/dd" }).val()
      $( 
      "#datemann" ).datepicker();
      });
      </script> 
      PHP-Code:
      $query mysql_query("SELECT * FROM Serverlist where Status = '1' ORDER BY ID DESC");
          while(
      $row mysql_fetch_assoc($query))
          {
          
              
      $id $row['ID']; 
              
      $gamename $row['GameName']; 
              
      $gametag $row['GameTag']; 
              
      $steamid $row['Steamid']; 
              
      $speicher $row['Speicherplatz']; 
              
      $laufzeit $row['Laufzeit']; 
              
      $portt $row['Port']; 
              
      $slotss $row['Slots']; 
              
      $npcc $row['NPC']; 
          
              echo 
      '<div id="'.$id.'" style="display: none;">
              <input type="hidden" name="id" value="'
      .$id.'" />';
              
              if(
      $slotss == 1)
              {
                  echo 
      '<div style="width:100px;">Slots:</div>
                  <input type="text" name="slots" id="slots" value="" /><br />'
      ;    
              }
              if(
      $portt == 1)
              {
                  echo 
      '<div style="width:100px;">Port</div>
                  <input type="text" name="port" id="port" value="" /><span id="pinfo" style="position:absolute;margin:5px 0 0 5px;font-size:15px;"></span><br />'
      ;
              }
              if(
      $npcc == 1)
              {
                  echo 
      '<div style="width:100px;">NPC:</div>
                  <input type="text" name="npc" id="npc" value="" /><br />'
      ;    
              }
              if(
      $speicher == 1)
              {
                  echo 
      '<div style="width:100px;">Speicherplatz:</div>
                  <input type="text" name="webmb" id="webmb" value="" /><br />'
      ;
              }
              if(
      $laufzeit == 1)
              {
                  echo 
      '<div style="width:200px;">Laufzeit</div>
                  <input type="text" name="datemann" id="datemann" value="" /><br />'
      ;
              }
              
              
              echo 
      '</div>';
          } 
          
      ?> 
      dort sieht man ja das ich in eine schleife andauernt bzq für jeden server das div erstellen lasse. mit der jeweiligen nummer des servers.

      wenn man dann ein auswählt wird es eingebledet was das div beinhaltet für den ausgewählten server.

      Problem ist das datum funktioniert nicht mehr. ich vermute mal weil es mehere input mit dem selben namen gibs weiß er nicht was er machen soll.

      Und genau das selbe roblem habe ich auch bei der port abfrage

      Kommentar


      • #4
        Code:
        $( "#datemann" )
        Das ist ein Selektor für eine ID und diese müssen im Dokument eindeutig sein.

        Falls du also mehrere Elemente mit der gleichen ID erzeugst, ist das ungültiges HTML.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Die älteste der drei mysql-Erweiterungen ist veraltet (mysql_*-Funktionen, nicht die MySQL-Datenbank) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
          Choosing an API
          Warum man mysql* generell nicht (mehr) nutzen sollte.
          Wie man von mysql* auf PDO umsteigt
          Wissenswertes zum Thema SQL-Injection

          Die Verwendung von "*" in SQL-Abfragen wird im Allgemeinen als schlechter Stil angesehen. "*" kann entweder alle Felder aus einer Tabelle, oder (wenn mehrere Tabellen mit einbezogen werden) aus allen Tabellen ziehen.

          Zwei Gründe sprechen dagegen: Wenn du dein Tabellenschema anpasst, wird die Abfrage weiterhin funktionieren. Die Abfrage wird in deinem Code aber Variablen (bzw. Array-Keys) erzeugen, die von deinem Programm so nicht erwartet werden. Das kann (je nachdem, wie deine Applikation aufgebaut ist) zu schwer nachvollziehbaren Problemen führen. Würdest du die Spaltennamen direkt in deiner SQL-Abfrage angeben, würde die SQL-Abfrage direkt lautstark fehlschlagen. Dann kannst du möglicherweise einen Alias für umbenannte Tabellenspalten angeben, ohne dass du deinen Applikationscode anpassen musst.

          Außerdem kann man durch eine explizite Angabe die Reihenfolge und die Anzahl der Tabellenspalten begrenzen. Die Reihenfolge kann je nach Applikation eine Rollen spielen und je weniger Felder man einbezieht, desto schneller wird das Ergebnis zum abfragenden Client übertragen.
          Standards - Best Practices - AwesomePHP - Guideline für WebApps

          Kommentar


          • #6
            @Istegelitz
            Das habe ich mir schon gedacht das es so ist.
            Kann man da eine Elegante lösung finden das es funktioniert wie ich will?
            Weil nicht jeder server hat ja die selben auswahl kriterien deshalb muss bzw will ich das Formular Dynamisch halten heißt das es sich anpasst auf die jeweilige auswahl

            @rkr
            Okay ahm was davon verstanden habe ist das mysql heutzu tage scheisse ist. und ich es nicht verwenden sollte. Und von den rest eig nur bahnhof.

            Kommentar


            • #7
              Okay ahm was davon verstanden habe ist das mysql heutzu tage scheisse ist. und ich es nicht verwenden sollte.
              Bitte nicht verwechseln! Die Rede ist von den Funktionen der mysql_*-Erweiterung in PHP, nicht von MySQL himself...
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Zitat von slipknoter6 Beitrag anzeigen
                Kann man da eine Elegante lösung finden das es funktioniert wie ich will?
                Sicher.

                Da dein Javascriptcode nichts individuelles macht, nimm eine class statt einer id=> $('.classname')
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  @lstegelitz

                  Wie meinst du das?
                  Soll ich das so machen?
                  PHP-Code:
                  <input type="text" name="datum" id="datum" value="" class= "datemann"/>
                  <
                  input type="text" name="port" id="port" class="port" value="" /><span id="pinfo" class="pinfo" style="position:absolute;margin:5px 0 0 5px;font-size:15px;"></span
                  Und dann die Scripte so?
                  PHP-Code:
                  $(function() {
                  $( 
                  ".datemann" ).datepicker({ dateFormat"yy/mm/dd" }).val()
                  $( 
                  ".datemann" ).datepicker();
                  });
                  $(
                  document).on('blur','.port', function() {
                      var 
                  lollloll = $(".port").val();
                      if(
                  lollloll.length 0)
                      {
                          $.
                  post('ajax/grunz_check_port.php', {port:lollloll}, function(data) {
                              if(
                  data == 'ok') {
                                  $(
                  ".port").val(lollloll);
                                  $(
                  ".pinfo").removeClass("label label-success label-danger").addClass("label label-success").html("<span class=\"label label-success\">Port Frei!</span>").fadeTo(500);
                              } else {
                                  $(
                  ".port").val(lollloll);
                                  $(
                  ".pinfo").removeClass("label label-success label-danger").addClass("label label-danger").html("<span class=\"label label-danger\">Port belegt!</span>").fadeTo(500);
                              }
                          });
                      } else {
                          $(
                  ".pinfo").removeClass("label label-success label-important").html("");
                      }
                  }); 
                  Geht aber auch nicht.

                  Kommentar


                  • #10
                    Zitat von slipknoter6 Beitrag anzeigen
                    Geht aber auch nicht.
                    Was heisst "geht nicht"?
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Also er überprüft es nicht bzw ich kann kein Datum auswählen

                      Kommentar


                      • #12
                        Debuggen & Fehler beheben...

                        Für weiteren Support, stell ein lauffähiges Minimalbeispiel bereit, z.B.
                        http://jsfiddle.net/hc40o38n/2/
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          also ich habe es mal dort reingestellt. Dort gehtz natürlich auch nicht.

                          Und ahm ja hier mal der link

                          http://jsfiddle.net/hc40o38n/3/

                          Kommentar


                          • #14
                            Nur so am Rande:
                            Gib Deinen numerischen Id's mal einen Prefix mit, dann bekommst Du die alle mit einem Selektor und kannst das fadeOut anwenden. 25x braucht das nicht passieren...
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Zitat von slipknoter6 Beitrag anzeigen
                              also ich habe es mal dort reingestellt. Dort gehtz natürlich auch nicht.

                              Und ahm ja hier mal der link

                              http://jsfiddle.net/hc40o38n/3/
                              Dein HTML hat kein einziges Element mit der class "datemann", an welches du deinen datepicker bindest.

                              Lerne Grundlagen
                              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                              Kommentar

                              Lädt...
                              X