根据.jqGrid中的第一个复选框选择读取第二个复选框值
问题描述:
我有一个.jqGrid
,其中存在一个使用值创建的隐藏复选框列。要在UI上显示复选框,请使用multiselect: true
。所以基本上,我有一套<tr>
,其中一个<td>
是隐藏的,有一定的价值。 我想要在显示<td>
时显示隐藏的<td>
的值。根据.jqGrid中的第一个复选框选择读取第二个复选框值
在这种JSFiddle链接,我想获得2nd
复选框(这是"NDVoYzZ1aUNYdzAlM2Q1"
)的值,并将其时用户点击1st
推到一个数组。如果用户选择1st
和3rd
,则阵列的值应为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);
答
如果我理解正确那么多的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>
你的问题配制仅基于HTML片段。很难理解你想要实现什么。你想在加载数据的时候“预先选择”一些jqGrid行吗?你可以使用哪些**版本的jqGrid(可以使用)以及从哪个** fork **的jqGrid([免费jqGrid](https://github.com/free-jqgrid/jqGrid),商业版)[Guriddo jqGrid JS ](http://guriddo.net/?page_id=103334)或版本 Oleg
对不起,我感到困惑。我不想“预先选择”。我想要隐藏的'td'值在服务器端传递它。 'dataType'是'json'和'jqGrid'版本是'4.4.0(旧的)'。 'onSelectRow'和'onSelectAll'用于保存用户选择的值。 – CSharper
首先,jqGrid 4.4.0更像5年前的版本,并且已经过去多年。严格推荐升级jqGrid。秒,目前还不清楚像“ 2nd'这样的奇怪信息是如何进入隐藏列的。您的HTML片段包含“id”重复项(请参阅两列中的id =“餐厅”)。你使用*自定义格式化程序*还是从服务器获取这样的数据?你可以发布一个** JavaScript代码**创建网格的例子吗?一般来说,您可以使用'getCell'或'getRowData'方法来获取数据 – Oleg