使用jQuery掩码和主干

时间:2013-10-15 14:45:56

标签: jquery backbone.js maskedinput

使用backbone和requirejs。我想使用输入掩码。我在视图中添加了另一个jQuery构造,它工作得很好,但是掩码并没有显示在手机字段中。我究竟做错了什么?感谢。

render: function(){
var compiledTemplate = _.template( RegisterTemplate, this.model );
this.$el.html(compiledTemplate); 

  $("#custphone").mask("(999) 999-9999");  //masks not showing up
  $("#custphone2").mask("(999) 999-9999");
  $("#custzip").mask("99999");
  $("#venuezip").mask("99999");

  $().acknowledgeinput({               //works fine!
          success_color: '#00FF00',
      danger_color: '#FF0000',
      update_on: 'keyup'
   });

1 个答案:

答案 0 :(得分:0)

在页面上放置视图的常用模式如下所示:

var v = new SomeView();
$(something).append(v.render().el);

v.render()调用会向视图的el添加一些HTML,但在el完成之后append将不会出现在页面上render 1}}已完成。所以如果你有render这样的话:

this.$el.html('<span id="pancakes">Pancakes</span>');
var $pancakes = $('#pancakes');

然后$pancakes将为空,#pancakes位于this.$el内,但它尚未在该页面上,$('#pancakes')将在页面上显示。

回到你的代码,我猜你#custphone和朋友来自你的模板。这意味着当您$el时,它们将位于视图$('#custphone').mask(...)中,而不是页面本身;结果是你在一堆空的jQuery对象上调用mask

您可以使用find在正确的位置查找这些元素:

this.$el.find('#custphone').mask('(999) 999-9999');
//...

或者您可以使用Backbone为您设置的this.$功能:

  

$(jQuery) view.$(selector)

     

如果页面中包含jQuery,则每个视图都有一个 $ 函数,该函数运行在视图元素中作用域的查询。 [...]它等同于运行:view.$el.find(selector)

所以this.$(x)或多或少是this.$el.find(x)的缩写形式,你会说:

this.$('#custphone').mask('(999) 999-9999');
//...