2016-08-23 2 views
0

Können Sie bitte jedem helfen?Anchor-Tag in PHP-E-Mail-Formular

Ich habe ein Mailformular mit PHP erstellt. Dieses Formular befindet sich ganz unten auf der Seite. Wenn ich auf "Senden" klicke (dies ist ein Eingabe-Tag), werden bei Fehlern Fehler über dem Formular angezeigt.

Aber wenn Sie auf senden klicken, wird die Seite zuerst zurück nach oben und Sie müssen den ganzen Weg nach unten scrollen, um zu sehen, ob Sie irgendwelche Fehler gemacht haben.

So ist es möglich, die Seite davon abzuhalten, den Start zurückspringen?

Ich weiß, dass es viele Male z. hier Is it possible not to jump to the top of the page on form submit? aber umschließen Sie diesen Code wird es immer noch scrool über Kontaktabschnitt in der Portfolio-Sektion ...... meine Seite svejdamartin.com Haben Sie irgendwelche Ideen?

<footer> 
    <section id="contact">     
    <div class="row"> 
     <div class="col-md-6 col-md-offset-3"> 
     <div id="fourth"> 
      <h1>Contact Form</h1> 
      <p>Please, do not hesitate to contact me if you want to get more information.</p> 
      <?php 
      if (isset($_GET['sent']) === true) { // ne POST ale GET // 
       echo '<div class="alert alert-success" role="alert">Thank you, I will be in touch</div>'; // toto se vypise po odeslani vzkazu // 

      } else { //tento tag konci az na konci formulare !!! Otevrel jsem tam php a ukoncil tento else // 
       if (empty ($errors) === false) { // tohle php vypisuje upozornovaci hlasky primo nad formularem // 
       echo '<ul>'; 
       foreach($errors as $error) { 
        echo '<li>', $error, '</li>';    
       } 
       echo '</ul>'; 
       }   
      ?> 
      <form id="form-anchor" method="post" action="index.php#form-anchor"> 
       <div class="form-group"> 
       <input type="text" name="name" class="form-control" placeholder="Your name" <?php if (isset($_POST['name']) === true) { echo 'value="', strip_tags($_POST['name']), '"'; } ?>>          
       </div> 
       <div class="form-group"> 
       <input type="email" name="email" class="form-control" placeholder="Your email" <?php if (isset($_POST['email']) === true) { echo 'value="', strip_tags($_POST['email']), '"'; } ?>>          
       </div>                   
       <div class="form-group"> 
       <textarea name="message" rows="5" class="form-control" placeholder="message...."><?php if (isset($_POST['message']) === true) { echo strip_tags($_POST['message']); } ?></textarea>          
       </div> 
       <div class="checkbox"> 
       <label> 
        <input type="checkbox" name="check">I am human 
       </label> 
       </div> 
       <input type="submit" name="submit" class="btn btn-secondary" value="send message">         
      </form> 
      <?php 
      } 
      ?> 
     </div>  
     </div> 
    </div> 
    </section> 
</footer> 
+0

Warum zur Hölle haben Sie Google ReCaptcha nicht verwendet? https://www.google.com/recaptcha Denken Sie, dass Ihre Checkbox "Ich bin ein Mensch" verhindert, dass Spammer Ihren Posteingang spammen? – Legionar

+0

Danke, das wusste ich nicht, ich bin immer noch Anfänger in diesen Dingen. – MartyS

+0

Gern geschehen. Die Implementierung von google reCaptcha bringt Ihnen max. 5 Minuten – Legionar

Antwort

0

Der Grund, warum die Seite im Portfolioabschnitt statt in Kontakten endet, liegt darin, dass der Browser nach dem Anker #fourth sucht, bevor die Bilder im Portfolio geladen werden.

So positioniert der Browser die Seite korrekt, aber das Kontaktformular bewegt sich wegen der Animation nach unten.

Eine Möglichkeit, dies zu beheben, ist die Höhe des #imag div zu definieren, so dass es bereits die Größe ist, die die Bilder sein werden.

+0

Hallo, vielen Dank für Ihre Antwort, ich glaube, dass es das Problem ist, es macht Sinn. Ich habe versucht, in CSS #imag Höhe 3100px und es hat nicht geholfen. Du schreibst über einen Weg, bitte hast du irgendwelche Ideen? Danke – MartyS

+0

Es tut mir so leid, ich habe vergessen, laden Sie meine CSS, es hilft.Vielen Dank !!! – MartyS

0

Sie können versuchen, JavaScript zu verwenden, um den Anker zu gehen, wenn die Seite geladen wird, nachdem das Formular echo '<script>location.hash = "#form-anchor";</script>';

<footer> 
<section id="contact">     
       <div class="row"> 
        <div class="col-md-6 col-md-offset-3"> 
         <div id="fourth"> 

          <h1>Contact Form</h1> 

          <p>Please, do not hesitate to contact me if you want to get more information.</p> 

            <?php 
            if (isset($_GET['sent']) === true) { // ne POST ale GET // 
             echo '<div class="alert alert-success" role="alert">Thank you, I will be in touch</div>'; 
             echo '<script>location.hash = "#form-anchor";</script>'; // toto se vypise po odeslani vzkazu // 

            } else { //tento tag konci az na konci formulare !!! Otevrel jsem tam php a ukoncil tento else // 
            if (empty ($errors) === false) { // tohle php vypisuje upozornovaci hlasky primo nad formularem // 
             echo '<ul>'; 
             foreach($errors as $error) { 
              echo '<li>', $error, '</li>';    
             } 
             echo '</ul>'; 
             echo '<script>location.hash = "#form-anchor";</script>'; 
            }  
            ?> 

          <form id="form-anchor" method="post" action="index.php"> 
           <div class="form-group"> 
            <input type="text" name="name" class="form-control" placeholder="Your name" <?php if (isset($_POST['name']) === true) { echo 'value="', strip_tags($_POST['name']), '"'; } ?>>          
           </div> 
           <div class="form-group"> 
            <input type="email" name="email" class="form-control" placeholder="Your email" <?php if (isset($_POST['email']) === true) { echo 'value="', strip_tags($_POST['email']), '"'; } ?>>          
           </div>                   
           <div class="form-group"> 
            <textarea name="message" rows="5" class="form-control" placeholder="message...."><?php if (isset($_POST['message']) === true) { echo strip_tags($_POST['message']); } ?></textarea>          
           </div> 
           <div class="checkbox"> 
            <label> 
             <input type="checkbox" name="check">I am human 
            </label> 
           </div> 
          <input type="submit" name="submit" class="btn btn-secondary" value="send message">         
          </form> 
          <?php 
          } 
          ?> 

         </div>  
       </div> 
      </div> 
</section> 

+1

Vielen Dank für Ihre schnelle Antwort, ich habe es versucht und der Effekt ist der gleiche .. – MartyS

0

Ihrer Seite mit eingereicht wurde ich besuchte, fand ich, dass Wenn ich das Formular ausfülle, aber das Kontrollkästchen "Ich bin Mensch" nicht aktiviere und die Nachricht "Senden" gedrückt wird, wird die URL "#fourth" angezeigt. aber ich fand ein Problem in diesem, wenn wir auf anderen Link wie zu Hause oder über klicken, navigiert die Seite zuerst zu dem Abschnitt und dann ändert URL, es bedeutet direkt nur Weitergabe Link Adresse wird nicht navigieren Sie zu Ihrer Seite Abschnitt wie JavaScript-Ereignisse sind auch daran beteiligt, wie in der beigefügten Bildschirm geschossen screen shot, so schlage ich vor, Sie die JavaScript-Funktion in Screenshot mit der erforderlichen Zielparameter gezeigt, daran zu erinnern, wie

function setSection(target, e) { 
    e.preventDefault() 


    var $target = $(target); 

    //sroll and show hash 
    $('html,body').animate({ 
     'scrollTop': $target.offset().top 
    }, 1000, 'swing', function() { 
     window.location.hash = target; 
    }); 

    // scroll and do not show hash 
    $('html, body').animate({ 
     'scrollTop': $target.offset().top 
    }, 1000, 'swing'); 
}); 
} 

und diese Funktion aufrufen, wenn der Kontakt Formular abschickt.

+0

Vielen Dank für Ihre Zeit zu überprüfen, mein Web Ich werde Javascript wieder zu lösen. Einen schönen Tag noch ! – MartyS

0

Das Formular wurde entwickelt, um auf ein Element innerhalb des Formulars zu schreiben. Ändern Sie action = "index.php # form-anchor" in action = "index.php"