2014-12-02 1 views
-1

Я использую tagsManager плагина http://welldonethings.com/tags/manager/v3, чтобы добавить некоторые тегов вид внутри Бритва и я пропускание ИНТА [] от контроллера для просмотра с помощью ViewBag Javascript кода какПроверить значение существует в массиве внутри метода валидатора tagsManager

$(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

Что такое значение ' value'? Кроме того, 'indexOf' не поддерживается во всех браузерах. Как вы отметили jQuery, вы можете попробовать '$ .inArray (items, value)' –

+0

Я попробовал Jquery также var res = $. InArray (value.trim(), items); console.log ("**" + res); Но получение -1. Также значение параметра значения получается как 1 –

ответ

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)); 

Example fiddle

Если вы должны работать со строковым значением, вам нужно преобразовать, что в целое число:

var value = "1"; 
console.log('JS', arr.indexOf(parseInt(value, 10))); 
console.log('jQ', $.inArray(parseInt(value), arr)); 
+0

, я попытался удалить trim(). Но все же его возврат -1 только. Вопрос, редактируемый с полной инициализацией tagManager plugin.YES, если я запускаю из консоли, работает нормально, никаких проблем, но из кода возвращается -1 –

Смежные вопросы