Note that there are some explanatory texts on larger screens.

plurals
  1. POBootstrap JQuery Validate: error message between input and <span class="add-on">
    primarykey
    data
    text
    <p>When using Twitter Bootstrap and Jquery Validate in a combination everything goes right except when using a field with an (icon) add-on like:</p> <pre><code>&lt;label&gt;Datum:&lt;/label&gt; &lt;div id="datum" class="input-append"&gt; &lt;input data-format="dd-MM-yyyy" type="text" name="datum" placeholder="Kies een datum..." /&gt; &lt;span class="add-on"&gt; &lt;i data-date-icon="icon-calendar"&gt;&lt;/i&gt; &lt;/span&gt; &lt;/div&gt; </code></pre> <p>When there is an error the HTML looks like this:</p> <pre><code>&lt;label&gt;Datum:&lt;/label&gt; &lt;div id="datum" class="input-append"&gt; &lt;input data-format="dd-MM-yyyy" type="text" name="datum" placeholder="Kies een datum..." /&gt; &lt;label for="datum" generated="true" class="error" style=""&gt;Datum is verplicht.&lt;/label&gt; &lt;span class="add-on"&gt; &lt;i data-date-icon="icon-calendar"&gt;&lt;/i&gt; &lt;/span&gt; &lt;/div&gt; </code></pre> <p>And this is how it looks in the browser:</p> <p><a href="http://s8.postimage.org/k1mpy0y1x/example.png" rel="nofollow noreferrer">Browser example http://s8.postimage.org/k1mpy0y1x/example.png</a></p> <p>How to fix this? Hope someone can help!</p> <p><strong>EDIT</strong></p> <pre><code>(function($,W,D) { var JQUERY4U = {}; JQUERY4U.UTIL = { setupFormValidation: function() { onkeyup: false //form validation rules // LOGIN FORM $("#loginform").validate({ onkeyup: false, rules: { gebruikersnaam: { required: true }, wachtwoord: { onkeyup: false, required: true, minlength: 5, } }, messages: { gebruikersnaam: { required: "Vul aub een gebruikersnaam in." }, wachtwoord: { required: "Vul aub een wachtwoord in.", minlength: "Wachtwoord moet minimaal 5 tekens langs zijn.", }, }, submitHandler: function(form) { form.submit(); } }); // NIEUWE DISTRIBUTIE OPDRACHT $("#distributieopdracht").validate({ onkeyup: false, rules: { opdrachtgever: { required: false }, datum: { required: true }, frequentie: { required: true }, actie: { required: true }, product: { required: false }, aantal: { required: false, digits: true }, koeling: { required: true }, tarief: { required: false, decimal: true }, naam: { required: false, naam: true }, adres: { required: false }, plaats: { required: false }, telefoonnnummer: { required: false, telefoon: true }, opmerkingen: { required: false }, }, messages: { datum: { required: "Datum is verplicht." }, frequentie: { required: "Frequentie is verplicht." }, actie: { required: "Keuze is verplicht." }, aantal: { digits: "Alleen getallen." }, koeling: { required: "Keuze is verplicht." }, tarief: { decimal: "Vul een geldig tarief in." }, naam: { naam: "Vul een geldige naam in." }, telefoonnnummer: { telefoon: "Vul een geldig telefoonnummer in." } }, submitHandler: function(form) { form.submit(); } }); } } //when the dom has loaded setup form validation rules $(D).ready(function($) { JQUERY4U.UTIL.setupFormValidation(); }); })(jQuery, window, document); </code></pre> <p><strong>EDIT</strong></p> <pre><code>$(document).ready(function () { $("#loginform").validate({ onkeyup: false, rules: { gebruikersnaam: { required: true }, wachtwoord: { onkeyup: false, required: true, minlength: 5, } }, messages: { gebruikersnaam: { required: "Vul aub een gebruikersnaam in." }, wachtwoord: { required: "Vul aub een wachtwoord in.", minlength: "Wachtwoord moet minimaal 5 tekens langs zijn.", }, }, }); $("#distributieopdracht").validate({ onkeyup: false, rules: { opdrachtgever: { required: false }, datum: { required: true }, frequentie: { required: true }, actie: { required: true }, product: { required: false }, aantal: { required: false, digits: true }, koeling: { required: true }, tarief: { required: false, decimal: true }, naam: { required: false, naam: true }, adres: { required: false }, plaats: { required: false }, telefoonnnummer: { required: false, telefoon: true }, opmerkingen: { required: false }, }, messages: { datum: { required: "Datum is verplicht." }, frequentie: { required: "Frequentie is verplicht." }, actie: { required: "Keuze is verplicht." }, aantal: { digits: "Alleen getallen." }, koeling: { required: "Keuze is verplicht." }, tarief: { decimal: "Vul een geldig tarief in." }, naam: { naam: "Vul een geldige naam in." }, telefoonnnummer: { telefoon: "Vul een geldig telefoonnummer in." } }, errorPlacement: function(error, element) { if (element.next().is('.add-on')) { error.addClass('add-on').insertAfter(element.next('.add-on')); } else { error.insertAfter(element); } error.append(element.parent()); }); }); }); </code></pre> <p><strong>FORM</strong></p> <pre><code>&lt;div id="distributie" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="distributieLabel" aria-hidden="true"&gt; &lt;form class="modal-form" action="submit.php" data-remote="true" method="post" id="distributieopdracht"&gt; &lt;div class="modal-header"&gt; &lt;button type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;&amp;times;&lt;/button&gt; &lt;h3 id="distributieLabel"&gt;Nieuwe Distributie Opdracht&lt;/h3&gt; &lt;/div&gt; &lt;div class="modal-body"&gt; &lt;label&gt;Opdrachtgever:&lt;/label&gt; &lt;input type="text" name="opdrachtgever" placeholder="Typ hier de opdrachtgever..." /&gt;&lt;br /&gt; &lt;label&gt;Datum:&lt;/label&gt; &lt;div id="datum" class="input-append"&gt; &lt;input data-format="dd-MM-yyyy" type="text" name="datum" placeholder="Kies een datum..." /&gt; &lt;span class="add-on"&gt;&lt;i data-date-icon="icon-calendar"&gt;&lt;/i&gt;&lt;/span&gt; &lt;/div&gt; &lt;label&gt;Frequentie:&lt;/label&gt; &lt;select name="frequentie"&gt; &lt;option value=""&gt;Kies een frequentie...&lt;/option&gt; &lt;option value="eenmalig"&gt;Eenmalig&lt;/option&gt; &lt;option value="dagelijks"&gt;Dagelijks&lt;/option&gt; &lt;option value="wekelijks"&gt;Wekelijks&lt;/option&gt; &lt;option value="tweewekelijks"&gt;Twee-wekelijks&lt;/option&gt; &lt;option value="maandelijks"&gt;Maandelijks&lt;/option&gt; &lt;option value="jaarlijks"&gt;Jaarlijks&lt;/option&gt; &lt;/select&gt;&lt;br /&gt; &lt;label&gt;Actie:&lt;/label&gt; &lt;select name="actie"&gt; &lt;option value=""&gt;Kies een actie...&lt;/option&gt; &lt;option value="ophalen"&gt;Ophalen&lt;/option&gt; &lt;option value="afleveren"&gt;Afleveren&lt;/option&gt; &lt;/select&gt;&lt;br /&gt; &lt;label&gt;Product:&lt;/label&gt; &lt;input type="text" name="product" placeholder="Typ hier een product..." /&gt;&lt;br /&gt; &lt;label&gt;Aantal colli:&lt;/label&gt; &lt;input type="text" name="aantal" placeholder="Typ hier het aantal..." /&gt;&lt;br /&gt; &lt;label&gt;Koeling:&lt;/label&gt; &lt;select name="koeling"&gt; &lt;option value=""&gt;Kies een optie...&lt;/option&gt; &lt;option value="ja"&gt;Ja&lt;/option&gt; &lt;option value="nee"&gt;Nee&lt;/option&gt; &lt;/select&gt;&lt;br /&gt; &lt;label&gt;Tarief:&lt;/label&gt; &lt;input type="text" name="tarief" placeholder="Typ hier een tarief..." /&gt;&lt;br /&gt; &lt;label&gt;Naam:&lt;/label&gt; &lt;input type="text" name="naam" placeholder="Typ hier een naam..." /&gt;&lt;br /&gt; &lt;label&gt;Adres:&lt;/label&gt; &lt;input type="text" name="adres" placeholder="Typ hier het adres..." /&gt;&lt;br /&gt; &lt;label&gt;Plaats:&lt;/label&gt; &lt;input type="text" name="plaats" placeholder="Typ hier de plaats..." /&gt;&lt;br /&gt; &lt;label&gt;Telefoonnummer:&lt;/label&gt; &lt;input type="text" name="telefoonnummer" placeholder="Typ hier het telefoonnummer..." /&gt;&lt;br /&gt; &lt;label&gt;Opmerkingen:&lt;/label&gt; &lt;textarea rows="3" name="opmerkingen" placeholder="Typ hier eventuele opmerkingen..."&gt;&lt;/textarea&gt; &lt;/div&gt; &lt;div class="modal-footer"&gt; &lt;input type="submit" value="Invoeren" class="btn btn-primary" /&gt; &lt;a href="#" class="btn" data-dismiss="modal"&gt;Annuleren&lt;/a&gt; &lt;/div&gt; &lt;/form&gt; &lt;/div&gt; </code></pre> <p><strong>EDIT</strong></p> <p><strong>Current situation:</strong></p> <p><a href="http://s8.postimage.org/lypgq05et/example2.png" rel="nofollow noreferrer">example 2 http://s8.postimage.org/lypgq05et/example2.png</a></p> <p><strong>Goal:</strong></p> <p><a href="http://s24.postimage.org/ajl63ys8l/example3.png" rel="nofollow noreferrer">example 2 http://s24.postimage.org/ajl63ys8l/example3.png</a></p> <p><strong>EDIT</strong></p> <pre><code>errorPlacement: function (error, element) { if (element.next().is('.add-on')) { error.insertAfter(element.next('.add-on')); } else { error.insertAfter(element); } element.parent().insertAfter(error); } </code></pre> <p><strong>Working solution by @jani-hyytiainen:</strong></p> <pre><code>errorPlacement : function(error, element) { if (element.next().is('.add-on')) { error.insertAfter(element.parent()); } else { error.insertAfter(element); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload