2013-03-08 11 views
6

Ich bin ein komplettes noob, neu alles im Grunde Tutorien folgendes zu verstehen, ich bin das jQuery-Plugin-FormularjQuery validate - wenn eine Option ausgewählt ist, die nächste Option nicht erforderlich?

mit Ich versuche, eine Form zu machen, wo „Kontakttyp“ gewählt, und wenn „Telefon msgstr "Option wird gewählt, dann wird die" Zeit des Kontakts "benötigt, aber wenn" Email "gewählt wird, wird die" Zeit des Kontakts "nicht benötigt.

* Das Formular html. *

<form id="askquestion" action="questionprocess.php" method="post"> 

       <td><label for="response type">Method of contact:</label></td> 
       <td><select name="response_type"> 
        <option value="" selected="selected">-- Please select --</option> 

        <option value="Phone">Phone</option> 
        <option value="Email">Email</option> 
        </select></td> 
        </tr> 

        <td><label for="response time">Best time to contact:</label></td> 
       <td><select name="contact_time"> 
        <option value="" selected="selected">-- Please select --</option> 
        <option value="morning_noon">Morning to Noon</option> 
        <option value="noon_afternoon">Noon to afternoon</option> 
        <option value="evenings">Evenings</option> 
        </select></td> 
        </tr> 


     </form> 

jQuery Regeln:

$(function() { 
    // Validate the contact form 
    $('#askquestion').validate({ 
    // Specify what the errors should look like 
    // when they are dynamically added to the form 
    errorElement: "label", 
    wrapper: "td", 
    errorPlacement: function(error, element) { 
     error.insertBefore(element.parent().parent()); 
     error.wrap("<tr class='error'></tr>"); 
     $("<td></td>").insertBefore(error); 
    }, 

    // Add requirements to each of the fields 
    rules: { 

     response_type: { 
      required:true, 
     }, 


     contact_time: { 
      required:true, 
     }, 

aktualisieren. So endet das Validierungsformular.

// Use Ajax to send everything to form processing file 
    submitHandler: function(form) { 
     $("#send").attr("value", "Sending..."); 
     $(form).ajaxSubmit({ 
      success: function(responseText, statusText, xhr, $form) { 
       $(form).slideUp("fast"); 
       $("#response").html(responseText).hide().slideDown("fast"); 
      } 
     }); 
     return false; 
    } 
    }); 
}); 

Antwort

6
rules: { 
    response_type: { 
     required: true, 
     contact_time: { 
      depends: function() { 
       return $('#askquestion select[name="response_type"]').val() === 'Phone'; 
      } 
     } 
    }, 

Es ist in der Dokumentation: http://docs.jquery.com/Plugins/Validation/validate#code

+0

Vielen Dank für das, das eine steile Lernkurve hat, ich glaube, ich einen Schließbügel benötigt, da es eine nicht bestätigen würde. 'code'rules: { response_type: { erforderlich: true, }, contact_time: { abhängt: function() { return $ ('# Fragen SieFrage select [name = "response_type"]') val (.) === 'Telefon'; 'code' Es ignoriert den erforderlichen Wert sowohl für response_type als auch für contact_time. –

+1

@FindingMozart, ja, Entschuldigung, das Objekt muss ordnungsgemäß geschlossen werden. Ich habe meine Antwort bearbeitet, um die fehlende Klammer hinzuzufügen. Danke. –

+0

Schätzen Sie die Hilfe, die Sie gegeben haben, wie ich schon sagte, komplett noob, ich verstehe den Code, den Sie geliefert haben und versuchen zu lernen, ich hoffe, Sie stört mich nicht weiter um Hilfe zu bitten. Im Moment benötigt das Formular keine Validierung für contact_time, wenn die E-Mail in response_type ausgewählt wurde - das ist großartig, was ich wollte. Allerdings scheint die Wahl des Telefons in der Form das Formular zu brechen und (in einer lokalen Nicht-Server-Umgebung) wirft die PHP-Seite. Gibt es etwas, das ich vermisse? Ich werde es erraten, weiß, dass Telefon benötigt wird, aber weiß nicht, was zu tun ist, wenn es ausgewählt ist? –

Verwandte Themen