javascript - JQuery input mask fails when load or create a field -
i'm doing application using robinherbots/jquery.inputmask.
all works well, except when load or create dynamic fields
<html> ... <div> <input class="datemask" value="31/01/2014" name="fechapago[]" id="fechapago[]" type="text"> </div> //more ajax loaded fields <h:commandlink action="#{someaction}"> <f:ajax onevent="function(data) { configuremask() }"/> click here </h:commandlink> ... <script src="jquery-2.0.2.min.js"></script> <script src="jquery.inputmask.js"></script> <script src="jquery.inputmask.date.extensions.js"></script> <script type="text/javascript"> //<![cdata[ $(function() { configuremask(); }); function configuremask() { $(".datemask").inputmask("dd/mm/yyyy", {"placeholder": "dd/mm/yyyy"}); } //]]> </script> ... </html> when action executed, new fields loaded , success callback tries configure fields mask, including new fields, previous fields doesn't work. previous fields empty , not accept new value.
how can configure loaded fields without affect previous fields?
thanks in advance
i'm not sure you're trying since didn't want happen -- let's give shot.
each time link clicked, evoke configuremask function. function selects input elements in dom , initializes inputmask.
is intent re-initialize input elements each time link clicked? once inputmask has been initialized, don't need else other update value. it's possible messing up, if you're trying initialize inputmask has been initialized.
you can remove old inputmask on element if want, , re-initialize them, doesn't make sense.
$(".datemask").inputmask('remove'); i feel you're trying initialize inputmask injected element.
... <h:commandlink action="#{someaction}"> <f:ajax onevent="function(data) { configuremask(this) }"/> click here </h:commandlink> ... function configuremask(element) { //if element passed in select it, else select //elements have not been processed var $elements = element ? $(element) : $(".datemask").not(".datemask-processed"); $elements.inputmask("dd/mm/yyyy").addclass("datemask-processed"); } since you're using jquery.inputmask.date.extensions.js library, have access of default date definitions. don't need send in placeholder dd\mm\yyyy, because it's defined.
//snippet `jquery.inputmask.date.extensions.js` library $.extend($.inputmask.defaults.aliases, { 'dd/mm/yyyy': { mask: "1/2/y", placeholder: "dd/mm/yyyy", ...
Comments
Post a Comment