输入掩码不使用下划线模板

时间:2014-02-14 16:46:02

标签: javascript backbone.js underscore.js

我正在尝试使用http://www.angelwatt.com/coding/masked_input.php#nav-example来更改输入处理日期的方式。它适用于bootstrap和jquery,但是 当我将输入字段放在jscript模板中时,它不起作用。

This works
<input type="text" class="form-control" id="some-mask" placeholder="" value="" />

<script type="text/template" id="tpl">
This doesnt work
<input type="text" class="form-control" id="some-mask2" placeholder="" value="" />
</script>       

<script type="text/javascript">
MaskedInput({
                  elm: document.getElementById('some-mask'),

                  format: 'dd/mm/yyyy',
                  separator: '\/',
                  typeon: 'DMY'
            });
    MaskedInput({
                  elm: document.getElementById('some-mask2'),

                  format: 'dd/mm/yyyy',
                  separator: '\/',
                  typeon: 'DMY'
            });     
</script>

任何人都知道为什么它不起作用的任何线索?谢谢。

1 个答案:

答案 0 :(得分:0)

问题是当你运行它时:

MaskedInput({
    elm: document.getElementById('some-mask2'),
    //...
});

找不到#some-mask2,所以你真的在说elm: null。您的#some-mask2元素位于#tpl模板中,但该模板不是HTML,在编译之前不在DOM中,填充它并将其放在页面上的某个位置。

某处你有这样的结构:

var t = _.template($('#tpl').html());
var h = t({...});
$(something).append(h);

您希望在之后调用MaskedInput ,而上述内容已将填好的模板放入DOM中。