我使用的是经过大量修改的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开始。
:/
发布于 2012-07-13 07:10:57
“我需要检查这个对象中是否有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;
};发布于 2012-07-13 07:11:23
它看起来是作为对象返回的,而不是数组,所以没有.length方法。如果您只是想检查对象中是否有任何内容,可以尝试遍历对象并在找到任何内容时设置一个标志。所以:
var isEmpty = true;
var tokens = $("#no-custom-tokens").tokenInput("get");
for (var i in tokens) {
isEmpty = false;
break;
}
if (isEmpty) {
...
}发布于 2012-07-13 07:17:50
检查是否为空:
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;
}https://stackoverflow.com/questions/11462009
复制相似问题