0

我正在使用 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>

执行操作时,仅加载新字段,并且成功回调尝试使用掩码配置所有字段,包括新字段,但以前的字段不起作用。以前的所有字段都是空的,不接受新值。

如何配置加载的字段而不影响以前的字段?

提前致谢

4

2 回答 2

2

这对我的情况也有帮助:

$(".phone-input").inputmask();
$(document).on("ajaxComplete", function(e){
    $(".phone-input").inputmask();
});
于 2017-10-10T08:38:49.623 回答
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", 
...
于 2014-09-14T17:00:42.883 回答