javascript - 我们如何在动态插入的输入上设置掩码?

标签 javascript jquery angularjs jquery-inputmask

Angular-UI-Mask is acting oddly ,我正在使用 jquery-inputmask我的一些输入,但是当在 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>

我可以做些什么来强制它将掩码设置为新的输入?

最佳答案

像 jQuery.inputMask 这样的 jQuery 插件的工作原理是(如您的代码所示)在文档“准备好”时将行为附加到 DOM 元素。这将运行一次,再也不会运行,因此对于动态添加的内容,此方法不起作用。

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

这是一个working Plunkr .

您需要在顶部包含脚本,如下所示 (I downloaded it from 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' }" /> 

关于javascript - 我们如何在动态插入的输入上设置掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608883/

相关文章:

javascript - Angular JS 中继器中的上下文菜单

javascript - 带有变量的 Angular.js 数据源

javascript - 使用隐藏元素在 div 上搜索过滤器

javascript - JQuery Click 处理程序仅适用于第一个项目

JQuery Cookie 在 Chrome 上不起作用

Javascript 正在丢失变量内容

angularjs - 如何获取点击次数

javascript - 错误 : Cannot call React. createContext 因为对象类型中缺少属性 createContext

javascript - setTimeout 立即用 jQuery 触发?

javascript - 如何从 WCF 服务使用 JSON