处理空数组的难度

时间:2014-07-01 18:42:32

标签: javascript arrays

我正在使用jQuery插件TagManager。 当表单初始化时我无法处理空数组,我无法弄清楚原因。这是我的剧本;

   $(".tm-input").each(function() {
      var e, l;
      e = $(this);
      l = e.data("load");
      e.tagsManager({
        prefilled: $.isEmptyObject(l) ? null : l
      });
    });

我将数据属性data-load设置为我想要显示的值 如果prefilled为空并且它不起作用,则l选项应设置为null。 如果我在上面的prefilled行中断,则l变量值为Array[0]。如果我检查$.isEmptyObject(l) ? null : l它返回null,但显示的值是"[]"。当data-load值为null时,它可以正常工作。

以下是受影响的表单html;

 <input class="tm-input" data-load="[]" placeholder="enter tags here" value="[]" type="text"></input>  

有人可以帮我弄清楚发生了什么吗?

2 个答案:

答案 0 :(得分:1)

以下更改可能会对您有所帮助:

l = e.data("load") || 1 ;

如果 l 未定义,此行会自动为其指定值 1 。您可以根据需要指定所需的任何值。

答案 1 :(得分:0)

事实证明,这是TagsManager插件处理空数组的方式的问题。它会忽略预填充选项,只显示&#34; []&#34;。

我在这里做了什么来解决它,这可以帮助别人;

   $(".tm-input").each(function() {
      var e, l;
      e = $(this);
      l = e.data("load");
      if ($.isEmptyObject(l)) {
        l = null;
        e.val("");
      }
      e.tagsManager({
        prefilled: l
      });

如果输入元素值为空数组,则会强制输入该元素值为空数组,而TagsManager处理得更好。