我正在使用tagsManager插件http://welldonethings.com/tags/manager/v3在Razor视图中添加某些标签,我使用ViewBag将一个int []从控制器传递给View javascript代码就像
$(document).ready(function () {
$(".tm-input").tagsManager({
delimiters: [9, 44], // tab, comma . Can add Enter by adding 13 to this list , but form Post will occur
hiddenTagListName: 'Students', //Use the property of the model as Hidden field to get the values at post
hiddenTagListId: 'Students',
validator: function (value) {
// var items = @Html.Raw(Json.Encode(ViewBag.RollNos));
var items = [ @(string.Join(", ", (int[])ViewBag.RollNos)) ];
console.log(items);
console.log(value);
var res=items.indexOf(value);
console.log(res);
var res=$.inArray( value, items);
console.log("**"+res);
if(items.indexOf(value) >-1)
{
return true;
}
else{
alert("Invalid roll NO");
return false;
}
}
});
});
在控制台中,我能看到的是
[1, 3, 6, 7, 5, 2, 4]
1
-1
**-1
即我得到的元素1不存在于数组中[同时使用jquery和djavascript方法] 对此错误的任何见解?
答案 0 :(得分:0)
您在将返回字符串的值上使用trim()
,该数组包含整数,因此比较将失败。删除trim
并运行:
var arr = [1, 3, 6, 7, 5, 2, 4];
var value = 1;
console.log('JS', arr.indexOf(value));
console.log('jQ', $.inArray(value, arr));
如果必须使用字符串值,则需要将其转换为整数:
var value = "1";
console.log('JS', arr.indexOf(parseInt(value, 10)));
console.log('jQ', $.inArray(parseInt(value), arr));