Frage

Ich arbeite an einer einseitigen Site mit Gleitinhalt.

Ich verwende jQuery.form.js und benutze im Kopf Folgendes, um das Kontaktformular/das Skript zu initialisieren:

<script type="text/javascript">
$(document).ready(function() { 

    $('#closeit').click(function(){
    $('.message').hide('slow');
    return false;
    });

    var options = { 
    target:        '#alert',
    }; 

    $('#contactForm').bind('submit', function() {
        $(this).ajaxSubmit(options);
        e.stopPropagation();
        return false;
    });


    $.fn.clearForm = function() {
      return this.each(function() {
        var type = this.type, tag = this.tagName.toLowerCase();
        if (tag == 'form')
          return $(':input',this).clearForm();
        if (type == 'text' || type == 'password' || tag == 'textarea')
          this.value = '';
        else if (type == 'checkbox' || type == 'radio')
          this.checked = false;
        else if (tag == 'select')
          this.selectedIndex = -1;
      });
    };  
</script>

Ich verwende auch Folgendes, um eine Ereignisausbreitung zu verhindern, wenn der Benutzer überall im Formular klickt:

$(function() {
    $('#email-form').click(fillForm);
});
function fillForm(e){
        e.stopPropagation();
        return false;
}

Wenn ich jedoch auf die Schaltfläche "Senden" klicke, wird das Formular nicht eingereicht. Ich kann mir nicht vorstellen, wie ich dies beheben kann, damit das Formular ohne das Ereignis eingereicht wird.

Jede Anleitung/Unterstützung wäre sehr geschätzt.

MTIA.

(Hier ist meine Form für die Aufzeichnung :)

<form action="sendmemail.php" method="post" id="contactForm">
<ul>
    <li>
        <div class="field-row">
            <div class="field-name"><p>name:<span class="abbrev">*</span></div>
            <div class="field-box"><input type="text" class="allfields" name="name" id="name"/></div>
        </div>
    </li>
    <li>
        <div class="field-row">
            <div class="field-name"><p>email:<span class="abbrev">*</span></div>
            <div class="field-box"><input type="text" class="allfields" name="email" id="email"/></div>
        </div>
    </li>
    <li>
        <div class="field-row">
            <div class="field-name"><p>phone:<span class="abbrev">*</span></div>
            <div class="field-box"><input type="text" class="allfields" name="tele" id="tele"/></div>
        </div>
    </li>
    <li>
        <div class="field-row message-field">
            <div class="field-name"><p>message:<span class="abbrev">*</span></div>
            <div class="field-box">
                <textarea class="allfields messagetext" name="message" id="message"></textarea>
            </div>
        </div>
    </li>
    <li class="submitbutton">
        <input type="submit" name="submitbutton" id="submitbutton" value=" SUBMIT" />
    </li>
</ul>

War es hilfreich?

Lösung

Wie wird der Benutzer ein Formular einreichen, wenn Sie ihm überhaupt verbieten, auf Ihre zu klicken

$(function() {
    $('#email-form').click(fillForm);
});
function fillForm(e){
        e.stopPropagation();
        return false;
}

Andere Tipps

Haben Sie sich das Beispiel von AjaxSubmit auf der Homepage von jQuery.form.js angesehen?http://jquery.malsup.com/form/#ajaxsubmit

$('#contactForm').submit(function() { 
    // inside event callbacks 'this' is the DOM element so we first 
    // wrap it in a jQuery object and then invoke ajaxSubmit 
    $(this).ajaxSubmit(options); 

    // !!! Important !!! 
    // always return false to prevent standard browser submit and page navigation 
    return false; 
}); 

Ich weiß nicht, welche Ereignisse Sie beim Klicken im Formular erwarten, aber die Tatsache, dass Sie die Ausbreitung von Ereignissen im Formular stoppen, kann dazu führen, dass auch das Klicken auf die Schaltfläche klicken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top