我正在使用RobinHerbots / jquery.inputmask进行应用程序。
一切正常,除非加载或创建动态字段
<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>
执行操作时,仅加载新字段,成功回调尝试使用掩码配置所有字段,包括新字段,但以前的字段不起作用。以前的所有字段都是空的,不接受新值。
如何配置加载的字段而不影响以前的字段?
提前致谢
答案 0 :(得分:2)
这对我的案例也有帮助:
$(".phone-input").inputmask();
$(document).on("ajaxComplete", function(e){
$(".phone-input").inputmask();
});
答案 1 :(得分:1)
我不完全确定你要做什么,因为你没有说出你想要发生什么 - 但是让我们试一试。
每次点击您的链接时,都会调出configureMask
功能。此函数选择DOM中的所有输入元素并初始化inputmask
。
每次点击此链接时,您是否打算重新初始化所有输入元素?初始化inputmask
后,您无需执行任何其他操作,然后更新该值。如果您尝试初始化已经初始化的inputmask
,则可能会出现问题。
如果需要,可以删除元素上的旧输入掩码,然后重新初始化它们,但这没有任何意义。
$(".datemask").inputmask('remove');
我觉得你要做的就是初始化注入元素的inputmask
。
...
<h:commandLink action="#{someaction}">
<f:ajax onevent="function(data) { configureMask(this) }"/>
Click Here
</h:commandLink>
...
function configureMask(element) {
//if the element was passed in then select it, else select all
//elements that have not been processed
var $elements = element ? $(element) : $(".datemask").not(".datemask-processed");
$elements.inputmask("dd/mm/yyyy").addClass("datemask-processed");
}
由于您已经在使用jquery.inputmask.date.extensions.js
库,因此您可以访问所有默认日期定义。您无需发送dd\mm\yyyy
的占位符,因为它已经定义。
//snippet from the `jquery.inputmask.date.extensions.js` library
$.extend($.inputmask.defaults.aliases, {
'dd/mm/yyyy': {
mask: "1/2/y",
placeholder: "dd/mm/yyyy",
...