2016-11-24 15 views
0

こんにちは私は配列に私のテーブルの2番目の列のチェック行を取得しようとし、コントローラのパラメータに渡します。配列にチェックされたテーブルの行を取得する方法

私はチェックボックスを持っており、チェックされたすべての行はコントローラパラメータに送信されます。私が必要とする列は "Index"という名前で、値は整数です。

私の問題は、以下のコードが空白であることです。解決策は何

<script> 
 
    var list = []; 
 
    $(document).ready(function() { 
 
     $('#test').click(function (event) { 
 
      var urls = []; 
 

 
      $('.table tr').each(function() { 
 
       if ($('.table tr').is(':checked')) { 
 
        urls.push($(this).find('td').eq(1).text()); 
 

 
       } 
 
        
 
       }); 
 

 
       alert(urls); 
 

 
      }); 
 
     
 
    }); 
 
</script>
@foreach (var item in Model) 
 
      { 
 
       <tr> 
 
        <td><input type="checkbox" name="checked" class="idRow"></td>   
 
        <td>@Html.DisplayFor(modelItem => item.Id)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.Index)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.StartDate)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.EndDate)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.Adult)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.Children)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.CategoryName)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.CategorySubName)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.RoomId)</td> 
 
        <td>@Html.DisplayFor(modelItem => item.ReservationStatusName)</td>  
 
       </tr>

、感謝

+0

'$(この).find( 'idRow:。チェックボックス ')です(':チェックする')。あなたはテーブルの行をチェックすることはできません – Satpal

+2

'、あなただけのチェックボックスやラジオボタンをチェックすることができます。 – Barmar

答えて

0

:checkedtr要素として使用することはできません。現在のtr要素のコンテキストでチェックボックスをオンにする必要があります。this.each()で使用できます。

if($(this).find('.idRow:checkbox').is(':checked')){ 
    ... 
} 
+0

今すぐに感謝します! –

0

あなたのコードの問題はtrがチェックされている場合は、チェックしているということである - 本当のことは決してない可能性があります。 tr内のチェックボックスを調べる必要があります。また、each()ハンドラ内のthisキーワードを使用して、現在の繰り返しの要素のみをチェックする必要があります。あなたが必要な配列を作成するmap()方法を使用してロジックを向上させることができること、しかし

var urls = []; 
$('.table tr').each(function() { 
    if ($(this).find('.idRow').is(':checked')) { 
     urls.push($(this).find('td').eq(1).text()); 
    } 
}); 

注:これを試してみてください。試してみてください:

var urls = $('.table tr .idRow:checked').map(function() { 
    return $(this).closest('tr').find('td:eq(1)').text(); 
}).get(); 
0

行をチェックすることはできません。チェックボックスとラジオボタンのみをチェックできます。そのため、行のチェックボックスに:checkedを使用する必要があります。

セレクターを使用してこれらを直接取得することができます。.each()を使用する必要はありません。その後、.map()を使用して、次の<td>からテキストの配列を作成できます。

var urls = $('.table .idRow:checked').parent().next().map(function() { 
    return $(this).text(); 
}).get(); 
関連する問題