2014-04-01 38 views
17

Angesichts dieser Code funktioniert es nie und immer wieder wahr egal was?Petersilien-Validierung ohne Formular auslösen?

<form id="my-form" data-validate="parsley"> 
    <p> 
    <label for="username">Username * :</label> 
    <input type="text" id="username" name="username" data-required="true" > 
    </p> 

    <p> 
    <label for="email">Email Address * :</label> 
    <input type="text" id="email" name="email" data-required="true" > 
    </p> 

    <br/> 

    <!-- Validate all the form fields by clicking this button --> 
    <a class="btn btn-danger" id="validate" >Validate All</a> 
</form> 

<script> 
var $form = $('#my-form'); 
$('#validate').click (function() { 
    if ($form.parsley('validate')) 
     console.log ('valid'); <-- always goes here 
    else 
     console.log ('invalid'); 
}); 

</script> 

Meine Frage ist also, ob es eine Möglichkeit gibt, die Petersilien-Validierung auszulösen, ohne einen Submit-Button hinzuzufügen?

Antwort

38

$form.parsley('validate') ist 1.x-API. Es wurde in 2.x-Versionen, die Sie möglicherweise verwenden, veraltet.

Versuchen Sie stattdessen $form.parsley().validate().

Best

+2

Ich habe klar Schwierigkeit der Suche nach worden (oder ausführlich) Petersilie Dokumentation und nicht immer sicher, ob es 1 ist .x oder 2.x. Danke dafür. – macloo

+0

@macloo, ihre Dokumente haben "fügen Sie Daten-Petersilie-validieren zu jedem

Sie wollen validiert werden", dann ein paar Zeilen unten in großen roten Buchstaben "Fügen Sie keine Daten-Petersilie-validieren zu Ihren Formularen". o_O –

+0

@EdmundReed hi, der große rote Absatz "do nto add-Petersilie-validate" betrifft nur die Verwendung von Javascript. Wenn Sie Petersilie in Javascript binden, wird das Hinzufügen dieser DOM-Attribute die Dinge durcheinander bringen. Dies ist möglicherweise nicht wirklich klar im Dokument, aber es hat einige Logik :) – guillaumepotier

4

Ich habe hohe und niedrige gesucht die Form Validierungsarbeiten mit einem Nicht-Form-Tag, um zu versuchen und zu machen. Ich denke, mein größtes Problem mit dem Framework ist, dass es nicht mit Nicht-Formular-Elementen out-of-the-box funktioniert. Ich wäre in Ordnung, wenn ich ein Formularelement verwende, wenn es nicht jedes Mal, wenn es versucht zu validieren, zum Anfang der Seite scrollt. Da dieses Verhalten der Form innewohnt, gibt es nur diesen Hack, um es zu beheben.

Nur als Randnotiz funktioniert auch die Verwendung des Data-Petersy-Validate-Attributs auf dem Div-Tag. Sie können das Formular auch als normal initialisieren (dh Sie können die Validierung abonnieren).

Beispiel html:

<div id="signupForm" data-parsley-validate> 
    ... put form inputs here ... 
    <button id="signupBtn">Sign me up</button> 
</div> 

So stellen Sie sicher stellen js in:

var $selector = $('#signupForm'), 
    form = $selector.parsley(); 

form.subscribe('parsley:form:success', function (e) { 
    ... 
}); 

$selector.find('button').click(function() { 
    form.validate(); 
}); 
Verwandte Themen