我正在使用jquery-tokeninput
的大量修改版本它本质上是一个文本输入框,允许多个标签就像堆栈溢出一样。
通过运行此命令,您可以获得当前输入中所有标记的返回值:
$("#no-custom-tokens").tokenInput("get")
问题是,它为我返回以下内容:
如果我尝试拨打$("#no-custom-tokens").tokenInput("get").length
,则说明未定义。
我需要检查这个对象中是否有u1,u2等(基本上......输入为空白)。
我考虑过......
if ($("#no-custom-tokens").tokenInput("get").u1.name != "")
除非您删除令牌,然后再添加2个,它不会从u1开始,u2 ...它从u3和u4开始。
:/
答案 0 :(得分:1)
“我需要检查此对象中是否有任何u1,u2等(基本上......是输入空白)。”
如果你基本上需要检查是否存在至少一个属性,并且属性是可枚举的,你可以这样做......
var has_props = false,
obj = $("#no-custom-tokens").tokenInput("get");
for (var p in obj) {
has_props = true;
break;
}
console.log(has_props);
如果你想知道有多少,如果它们是可枚举的,你可以使用Object.keys
......
var props_len = Object.keys($("#no-custom-tokens").tokenInput("get")).length;
如果你支持旧浏览器,你只需要填充它......
if (!Object.keys)
Object.keys = function(o) {
var keys = [];
for (var k in o)
if (o.hasOwnProperty(k))
keys.push(k);
return keys;
};
答案 1 :(得分:1)
它看起来像是作为对象而不是数组返回,因此没有.length方法。如果您只想检查对象中是否有任何内容,您可以尝试遍历该对象并在找到任何内容时设置标志。所以:
var isEmpty = true;
var tokens = $("#no-custom-tokens").tokenInput("get");
for (var i in tokens) {
isEmpty = false;
break;
}
if (isEmpty) {
...
}
答案 2 :(得分:1)
检查它是否为空:
function isEmpty(obj) {
for (var i in obj) {
if (obj.hasOwnProperty(i)) return false;
}
return true;
}
检查其长度:
function objectLength(obj) {
var size = 0;
for (var i in obj) {
if (obj.hasOwnProperty(i)) ++size;
}
return size;
}
// or:
function objectLength(obj) {
return Object.keys(obj).length;
}