根据.jqGrid中的第一个复选框选择读取第二个复选框值

问题描述:

我有一个.jqGrid,其中存在一个使用值创建的隐藏复选框列。要在UI上显示复选框,请使用multiselect: true。所以基本上,我有一套<tr>,其中一个<td>是隐藏的,有一定的价值。 我想要在显示<td>时显示隐藏的<td>的值。根据.jqGrid中的第一个复选框选择读取第二个复选框值

在这种JSFiddle链接,我想获得2nd复选框(这是"NDVoYzZ1aUNYdzAlM2Q1")的值,并将其时用户点击1st推到一个数组。如果用户选择1st3rd,则阵列的值应为2nd and 4th复选框。

我该怎么做?

HTML摘录:

<tr role="row" id="0" tabindex="-1" class="ui-widget-content jqgrow ui-row-ltr ui-state-highlight" aria-selected="true"> 
     <td role="gridcell" style="text-align:center;width: 20px;" aria-describedby="grid_cb"> 
     <input role="checkbox" type="checkbox" id="jqg_grid_0" class="cbox" name="jqg_grid_0"> 1st 
     </td> 
     <!-- HIDDEN TD --> 
     <td role="gridcell" style="text-align:center;display:none;" title="" aria-describedby="grid_check"> 
     <input type="checkbox" value="NDVoYzZ1aUNYdzAlM2Q1" name="Restaurants" id="Restaurants"> 2nd 
     </td> 
    </tr> 
    </br> 
    <tr role="row" id="1" tabindex="-1" class="ui-widget-content jqgrow ui-row-ltr"> 
     <td role="gridcell" style="text-align:center;" aria-describedby="grid_cb"> 
     <input role="checkbox" type="checkbox" id="jqg_grid_1" class="cbox" name="jqg_grid_1"> 3rd 
     </td> 
     <!-- HIDDEN TD --> 
     <td role="gridcell" style="text-align:center;display:none;" title="" aria-describedby="grid_check"> 
     <input type="checkbox" value="QjBENlRFMW83SVElM2Q1" name="Restaurants" id="Restaurants"> 4th 
     </td> 
    </tr> 

.js文件片段:

var res = []; 
$('input[type=checkbox]:checked') 
    .each(function() { 
    res.push($(this).eq(1).val()); 
    }); 

if (res.length == 0) { 
    alert('You should select at least one option.'); 
    return; 
} 

alert("Values: " + res); 
+0

你的问题配制仅基于HTML片段。很难理解你想要实现什么。你想在加载数据的时候“预先选择”一些jqGrid行吗?你可以使用哪些**版本的jqGrid(可以使用)以及从哪个** fork **的jqGrid([免费jqGrid](https://github.com/free-jqgrid/jqGrid),商业版)[Guriddo jqGrid JS ](http://guriddo.net/?page_id=103334)或版本 Oleg

+0

对不起,我感到困惑。我不想“预先选择”。我想要隐藏的'td'值在服务器端传递它。 'dataType'是'json'和'jqGrid'版本是'4.4.0(旧的)'。 'onSelectRow'和'onSelectAll'用于保存用户选择的值。 – CSharper

+0

首先,jqGrid 4.4.0更像5年前的版本,并且已经过去多年。严格推荐升级jqGrid。秒,目前还不清楚像“ 2nd'这样的奇怪信息是如何进入隐藏列的。您的HTML片段包含“id”重复项(请参阅两列中的id =“餐厅”)。你使用*自定义格式化程序*还是从服务器获取这样的数据?你可以发布一个** JavaScript代码**创建网格的例子吗?一般来说,您可以使用'getCell'或'getRowData'方法来获取数据 – Oleg

如果我理解正确那么多的jqGrid你正在寻找:如何附上点击处理程序以及如何获得第二个复选框....

如果是这样你可以改变这一行:

res.push($(this).eq(1).val()); 

到:

res.push($(this).closest('td').next('td').find('input[type=checkbox]').val()); 

记住,ID必须是唯一的。

的片段:

$('input[type=checkbox]').on('change', function (e) { 
 
    var res = []; 
 
    $('input[type=checkbox]:checked').each(function (idx, ele) { 
 
     res.push($(this).closest('td').next('td').find('input[type=checkbox]').val()); 
 
    }); 
 

 
    if (res.length == 0) { 
 
     console.log('You should select at least one option.'); 
 
     return; 
 
    } 
 

 
    console.log("Values: " + res); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<table> 
 
    <tbody> 
 
    <tr role="row" id="0" tabindex="-1" class="ui-widget-content jqgrow ui-row-ltr ui-state-highlight" 
 
     aria-selected="true"> 
 
     <td role="gridcell" style="text-align:center;width: 20px;" aria-describedby="grid_cb"> 
 
      <input role="checkbox" type="checkbox" id="jqg_grid_0" class="cbox" name="jqg_grid_0"> 1st 
 
     </td> 
 
     <!-- HIDDEN TD --> 
 
     <td role="gridcell" style="text-align:center;display:none;" title="" aria-describedby="grid_check"> 
 
      <input type="checkbox" value="NDVoYzZ1aUNYdzAlM2Q1" name="Restaurants" id="Restaurants1"> 2nd 
 
     </td> 
 
    </tr> 
 
    </br> 
 
    <tr role="row" id="1" tabindex="-1" class="ui-widget-content jqgrow ui-row-ltr"> 
 
     <td role="gridcell" style="text-align:center;" aria-describedby="grid_cb"> 
 
      <input role="checkbox" type="checkbox" id="jqg_grid_1" class="cbox" name="jqg_grid_1"> 3rd 
 
     </td> 
 
     <!-- HIDDEN TD --> 
 
     <td role="gridcell" style="text-align:center;display:none;" title="" aria-describedby="grid_check"> 
 
      <input type="checkbox" value="QjBENlRFMW83SVElM2Q1" name="Restaurants" id="Restaurants2"> 4th 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

这就是我一直在寻找的。此外,'jqGrid'创建的ID将是唯一的(即'jqg_grid_0','jqg_grid_1'等等)。 – CSharper

+0

@CSharper不客气 – gaetanoM