2015-04-28 2 views
0

В div, у меня есть CheckBoxList, используя CheckBoxListFor в MVC Razor. Я хотел бы, когда я нажимаю кнопку, чтобы проверить все значения всех флажков. Как это сделать?Как получить отмеченные предметы из контрольного списка MVC Razor

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

     } 
    }); 

Это работает, но я не могу удалить значение в SearchBranchSeq когда снимите флажок с CheckBoxList. Может ли кто-нибудь помочь мне найти решение?

ответ

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, вы получите эту ошибку. –

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