检查值存在于标签管理器验证器方法内的数组中

Check value exists in Array inside tagsManager validator method

本文关键字:方法 验证 数组 管理器 存在 于标签 标签 检查      更新时间:2023-09-26

我正在使用 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

IE 我得到的是元素 1 在数组中不存在 [使用两个 jquery 和 dJavaScript 方法]对这个错误有什么见解吗?

您正在对将返回字符串的值使用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));