2014-12-02 48 views
-1

我使用tagsManager插件http://welldonethings.com/tags/manager/v3添加Razor視圖內某些標記和我傳遞的int []從控制器查看使用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)' – 2014-12-02 16:03:40

+0

我試過jquery也 var res = $。inArray(value.trim(),items); console.log(「**」+ res); 但是獲得-1。值的參數的值也越來越像1 – 2014-12-02 16:05:14

回答

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。這個問題編輯完成tagsManager plugin.YES的初始化,如果我從控制檯運行的東西工作正常沒有問題,但從代碼其返回-1 – 2014-12-02 16:18:31