1

由于Angular-UI-Mask 的行为很奇怪,我在我的一些输入中使用了jquery-inputmask,但是当一个输入被动态插入 ny Angular 时,它没有掩码:

<li ng-repeat="item in items">
    <input type="text" name="birth_date" class="span2 format_date" ng-model="birth_date" placeholder="Data de Nascimento" required />
</li>

这是相关的脚本

<script type="text/javascript">
    jQuery(document).ready(function(){
        $(".format_date").inputmask("99/99/9999");
    });
</script>

我能做些什么来强制它将掩码设置为新输入吗?

4

1 回答 1

1

jQuery.inputMask 之类的 jQuery 插件通过(如您的代码所示)在文档“准备就绪”时将行为附加到 DOM 元素。这将运行一次,并且永远不会再次运行,因此对于动态添加的内容,这种方法不起作用。

相反,您需要在相应的 DOM 更改时运行的东西。因此,每当添加“项目”列表中的“项目”时,都会添加该元素并针对该元素运行相应的 jQuery 函数。您需要为此使用 AngularJS,并且可以编写自己的指令,但幸运的是,有人已经为您编写了代码:jQuery Passthrough 插件作为Angular UI 的UI.Utils 的一部分。

这是一个工作 Plunkr

您需要在顶部包含脚本,如下所示(我从 GitHub 下载了它):

<script src="ui-utils.jq.js"></script>

将模块加载到 AngularJS 中,例如:

var app = angular.module('myApp', ['ui.jq']); 

然后在您的 HTML 标记中使用该指令:

<input type="text" ui-jq="inputmask" ui-options="'99/99/9999', { 'placeholder': 'dd/mm/yyyy' }" /> 
于 2014-03-17T15:26:10.550 回答