У меня есть jqgrid с использованием php. В одном из столбцов я хочу использовать две радиокнопки (Да / Нет). Я использовал пользовательский форматер для этого ..
$(function () {
function myelem (value, options) {
var radio1 = document.createElement('input');
radio1.id = 'radY';
radio1.type = 'radio';
radio1.name = 'appr';
radio1.value = 'Yes';
var radio2 = document.createElement('input');
radio2.id = 'radN';
radio2.type = 'radio';
radio2.name = 'appr';
radio2.value = 'No';
var label1 = document.createElement('label');
label1.setAttribute('for', radio1.id);
label1.innerHTML = 'Yes';
var label2 = document.createElement('label');
label2.setAttribute('for', radio2.id);
label2.innerHTML = 'No';
var container = document.createElement('div');
container.appendChild(radio1);
container.appendChild(label1);
container.appendChild(radio2);
container.appendChild(label2);
return container;
}
function myvalue(elem, operation, value) {
if(operation === 'get') {
return $(elem).val();
}
else if(operation === 'set') {
$('input',elem).val(value);
}
}
$("#list").jqGrid({
url: "fetch.php?sqlselect=1",
datatype: "json",
mtype: "GET",
colNames: ["Role", "Region", "Approved"],
colModel: [
{ name: "role", width: 60,editable:true},
{ name: "region", width: 60,editable:true},
{ name: "approved", width:250, editable:true, edittype:"custom", editoptions: {custom_element: myelem, custom_value:myvalue}}
],
onSelectRow: function(id){
if(id && id!==lastSel){
jQuery('#list').restoreRow(lastSel);
lastSel=id;
}
jQuery('#list').jqGrid('editRow',id,
{
keys : true,
url : "edit.php"} );
},
.............
Все отлично работает при редактировании, кроме столбца переключателя. Я вижу радио-кнопки на клике. Но как только я нажимаю Enter, значение переключателя не передается на мою страницу редактирования. Это понятно, потому что функция myval читает элемент div, а не элемент radio. Поскольку есть две радиокнопки (с одним и тем же именем, поэтому в данный момент можно отметить только одну из них Да / Нет), и это не единственная сущность, подобная текстовому полю, чтобы «вернуть» миелем, мне пришлось использовать div , Есть ли способ, которым я могу сделать это, где я могу получить значение радиоэлемента?
Я понял это .. Все, что мне нужно было сделать, это:
function myvalue(elem, operation, value) {
if(document.getElementById('radY').checked) {
return "Yes";
}
else {
return "No";
}
}
Других решений пока нет …