2015-04-28 67 views
0

在一個div中,我有一些CheckBoxList使用CheckBoxListForMVC Razor。我希望當我按下按鈕來檢查所有複選框的所有值時。這個怎麼做?如何從checklistbox MVC剃刀檢查項目

<div class="col-md-4"> 
       <label for="" class="control-label"> 
        Branch</label><br /> 
       @Html.CheckBoxListFor(m => m.SearchBranchSeq,MultiSelectList)Model.SearchBranches, new {@id="SearchBranches", @style = "overflow: auto; height: 100px; width: 250px; border: 1px solid #cccccc;" }) 

      </div> 

我試着像下面,

var SearchBranchSeq = []; 
    $('input:checkbox').click(function() { 
     if ($(this).is(':checked')) { 
      SearchBranchSeq.push($(this).val()); 
     } 
     else { 
      var x = SearchBranchSeq.valueOf($(this).val()); 
      SearchBranchSeq.splice(x, 1); 

     } 
    }); 

這是工作,但是當我取消從CheckBoxList一個複選框,我不能刪除SearchBranchSeq值。任何人都可以幫助我找到解決方案嗎?

回答

1

您需要在陣列上使用indexOf()而不是valueOf()。如鏈接indexOf()中所述,在Internet Explorer 9+和其他現代瀏覽器中定義。

// IE Old 
if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function(obj, start) { 
     for (var i = (start || 0), j = this.length; i < j; i++) { 
      if (this[i] === obj) { return i; } 
     } 
     return -1; 
    } 
} 
// End IE Old - not needed if old IE is not supported 

var x = SearchBranchSeq.indexOf($(this).val()); 
SearchBranchSeq.splice(x, 1); 
+0

它顯示此「對象不支持此屬性或方法」錯誤 –

+0

這是顯示在indexOf調用或其他地方。據我所知,SearchBranchSeq在你的點擊處理程序之前被定義爲一個數組,因此它包含indexOf()的定義。 –

+0

@MdAslam另外,如果你使用Internet Explorer <9,那麼你會得到這個錯誤。 –