submit mit ENTER auslösen, aber value mitsenden?!

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

  • submit mit ENTER auslösen, aber value mitsenden?!

    Hallo ihr lieben,

    ich hab ein verzwicktes Problem und zwar:

    Ein Formular mit einem
    <Suchefeld>
    <selectfeld>(dropdown) -> lösen onchange=this.form.submit() aus
    <selectfeld>(dropdown) -> lösen onchange=this.form.submit() aus
    <selectfeld>(dropdown) -> lösen onchange=this.form.submit() aus
    <selectfeld>(dropdown) -> lösen onchange=this.form.submit() aus
    <selectfeld>(dropdown) -> lösen onchange=this.form.submit() aus
    <hidden feld mit name=seach_detail value=1>
    <input type="submit" name=search_detail_start value=suche starten>

    Die Dropdown´s filtern sich gegenseitig mit PHP/mysql DB abfragen
    deswegen muss ich bei jeder veränderung das formular schon abschicken, allerdings erst wenn der search_detail_start gedrückt wird auch die suchergebnisse angezeigt werden.

    Da ganze funktioniert super solange ich mit der Maus den search_detail_start -> submit button auslösen weil ich dann auf das value in dem fall "Suche starten" abfragen kann. Leider funktioniert das ganze nicht wenn ich die Suche mit enter auslösen weil anscheinend dann vom submit button die values nicht mitgesendet werden über _POST ?! Gibst da irgendeine möglichkeit das man mit javascript und keyeventhandlern beim ENTER drücken einfach ein wert mit _POST übergibt?

    Danke schon im Voraus!
    Grüße
    Tom

  • #2
    Gibst da irgendeine möglichkeit das man mit javascript und keyeventhandlern beim ENTER drücken einfach ein wert mit _POST übergibt?
    Ja. z.B. könntest du mit einem Key Event feststellen welche Taste gedrückt wurde und dann den POST Wert mittels mittels einem AJAX Request an den Server übermitteln.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      mhhh also hab´s jetzt mal fast mit Javascript hinbekommen nur
      nen Fehler hab ich schon noch. Leider kenn ich mich nicht so gut aus mit den ganzen eventhandelern bei JS.

      <script type="text/javascript">
      //<![CDATA[
      function request_mitsenden(wert)
      {
      if(!wert)
      {
      if(window.event.keyCode == 13)
      {
      alert(window.event.keyCode);
      document.write('<?php $_REQUEST[search_detail_start] = 1; ?>');
      document.write('test');
      }
      }
      }
      document.onkeypress = request_mitsenden;
      //]]>
      </script>

      das problem ist er gibt mir zum test den keycode von 13(also enter) auch aus dann mach ich ok und er schreibt mir ein leeres document einfach 'test' rein . Was mach ich falsch blick da ned ganz durch mit document.onkeypress = request_mitsenden;
      das macht doch nix anderes als wie:
      Wenn der USER beim document nen key drückt -> führe die Funktion request_mitsenden aus.

      Kommentar


      • #4
        Original geschrieben von tomtherock
        das problem ist er gibt mir zum test den keycode von 13(also enter) auch aus dann mach ich ok und er schreibt mir ein leeres document einfach 'test' rein
        Natürlich, schliesslich hast du document.write verwendet - und das ersetzt bekanntlich das komplette Dokument, wenn du es "nach dem Laden" aufrufst.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          mhhh ok wie könnte ich das dann realisieren ohne das ganze document zu überschreiben?

          weil wenn ich einfach im code zwischen drin

          document.write

          mach schreibt er es mir einfach zwischen den code rein.
          Hat wahrscheinlich damit zu das es wegem formular refresht oder?

          Kommentar


          • #6
            Die Fkt sollte wenn sie aufgerufen wird einen POST-Request mittels AJAX auslösen.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Juhhu ich hab das ganze jetzt rein mit PHP und JS gelößt .
              Funktioniert auch super...

              Fall es mal jemand braucht hier der Code:

              Datei in der das Formular ist:

              PHP-Code:


              <script language="JavaScript"> 
              function checkkey()
                  { 
                  key = window.event.keyCode; 
                  if(key == 13) 
                      { 
                      document.getElementById("request_mitgabe").innerHTML = '<input type="hidden" name="search_detail_start" value="1" />';
                      } 
                  else
                      {
                      document.getElementById("request_mitgabe").innerHTML = '';
                      }
                  } 
              </script> 


              <body onkeydown="checkkey();">

              <?php
              echo '<h3>ERWEITERTE SUCHE</h3><br />
                              <div class="liniedotted"></div>
                  
                              <form action="'
              .$PHP_SELF.'" name="myform" id="myform" method="post">
                              <div style="background: #f3f3f3; padding: 10px;"><span class="fontweightbold grau2" style="margin-bottom: 0px; display: block;">Allgemeine Suche im Shop</span> <br />
                                  <input style="font-size: 11px; width: 180px;" type="text" id="search_value_detail" name="search_value_detail" value="'
              .$_REQUEST['search_value_detail'].'" />
                                  <span style="font-size: 10px;">(z.B Artikelname, Beschreibung oder Artikelnummer)</span>
                              </div>
                              <div style="margin-bottom: 5px;" class="liniedotted"></div>
                                  <div style="padding: 0 10px;">
                                      <span class="fontweightbold grau2" style="line-height: 40px;">Oder suche nach genau dem, was du willst!</span><br />
                                      <div><label>W&auml;hle dein Geschlecht:</label><select style="font-size: 11px; width: 140px;" name="id_geschlecht" onchange="this.form.submit()">'
              .$opt_geschlecht.'</select></div><br />
                                      <div><label>W&auml;hle die Hauptkategorie aus:</label><select style="font-size: 11px; width: 140px;" name="id_verwendung" onchange="this.form.submit()">'
              .$opt_verwendung.'</select></div><br />
                                      <div><label>W&auml;hle die Unterkategorie aus:</label><select style="font-size: 11px; width: 140px;" name="id_artikelart" onchange="this.form.submit()">'
              .$opt_artikelart.'</select></div><br />
                                      <div><label>Suche nach deiner Marke:</label><select style="font-size: 11px; width: 140px;" name="id_marke_uebersicht" onchange="this.form.submit()">'
              .$opt_marke.'</select></div><br />
                                      <div><label>Welche Farbe bevorzugst du?</label><select style="font-size: 11px; width: 140px;" name="id_farbe" onchange="this.form.submit()">'
              .$opt_farbe.'</select></div><br />
                                      <!--<button class="button_erweiterte_suche" type="submit" name="search_detail_start" value="Suche starten"><img src="images/temporaere_bilder/btn_suche_starten.gif" border="0" alt="" /></button>-->
                                      <input type="submit" name="search_detail_start" value="Suche Starten" />
                                      <input type="hidden" name="search_detail" value="1" />
                                      <span id="request_mitgabe"></span>
                                  </div><br />
                              </form>
                              '
              ;
              /*
              Vorgehensweise des Scriptes:
              - wenn man einen Key auf der Tastatur drücke führt er die funktion oben aus
              - die funktion überprüft ob die gedrückte Taste der ENTER key war(code 13)
              - dann schreibt er mit hilfe von innerhtml in eine angegebene <span></span> einfach ein input feld das hidden ist und genauso heisst wie der eigentliche submit button, das macht er noch bevor er das formular losschickt
              - die <span> wird mithilfe von GetElementByID angesprochen also einfach der<span> eine id geben -> Bsp. siehe oben
              */

              ?>

              Kommentar

              Lädt...
              X