You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JqGrid技术问题:获取单元格编辑输入文本并回写至表格

解决JqGrid自定义Formatter生成输入框后无法获取用户输入值的问题

你遇到的核心问题是:自定义Formatter渲染的输入框,其值并没有同步到JqGrid的内部数据存储中,所以你获取到的始终是控制器返回的原始值。下面给你两种实用的解决方案:

方案一:实时监听输入框变化,同步到JqGrid数据

这个方法会在用户输入内容时,立刻把新值更新到JqGrid的单元格数据里,确保后续获取数据时都是最新值。

步骤1:优化Formatter代码

首先,给输入框加上统一的类名(方便后续绑定事件),并默认填充原始值:

noAdjustAlertFormatter: function(cellvalue, options, rowObject){ 
    if(rowObject.noAdjustAlert === 'Y'){ 
        // 加上统一类名.alert-input,同时填充原始值
        return '<input class="form-control input-sm alert-input" id="' + rowObject.storeId + 'alertInput" type="text" value="' + (cellvalue || '') + '">';
    }else{ 
        return ''; 
    } 
}

步骤2:绑定输入框的change事件

在JqGrid初始化完成后,给所有输入框绑定change事件,实时更新JqGrid数据:

// 确保JqGrid渲染完成后绑定事件
$('#confirmTable').on('change', '.alert-input', function() {
    const $input = $(this);
    // 获取当前行的ID(因为你把storeId设为key,所以行ID就是storeId)
    const rowId = $input.closest('tr').attr('id');
    const newValue = $input.val();
    
    // 调用setCell更新JqGrid内部的单元格数据
    $('#confirmTable').jqGrid('setCell', rowId, 'noAdjustAlert', newValue);
});

这样之后,当你用getCell(rowId, 'noAdjustAlert')或者getRowData(rowId)获取数据时,就能拿到用户输入的最新值了。

方案二:提交时批量同步输入值

如果你不需要实时同步,只需要在提交表单/数据时一次性获取所有输入值,可以用这个方法:

function getAlertInputValues() {
    const inputData = [];
    // 遍历所有输入框
    $('#confirmTable .alert-input').each(function() {
        const $input = $(this);
        const storeId = $input.attr('id').replace('alertInput', '');
        const inputValue = $input.val();
        
        // 同步到JqGrid数据(可选,如果之后还要用JqGrid的方法获取数据的话)
        $('#confirmTable').jqGrid('setCell', storeId, 'noAdjustAlert', inputValue);
        
        // 收集数据,方便后续提交到后端
        inputData.push({
            storeId: storeId,
            noAdjustAlert: inputValue
        });
    });
    return inputData;
}

调用这个函数就能得到所有用户输入的留言数据,直接提交给后端即可。

为什么之前获取的是原始值?

JqGrid的单元格数据是存储在其内部的data对象中的,自定义Formatter只是负责生成前端显示的DOM元素,并不会自动把输入框的变化同步到内部数据。所以必须手动调用setCell方法,把输入框的新值更新到JqGrid的内部数据存储里,这样后续获取的数据才是最新的。

内容的提问来源于stack exchange,提问作者HanHan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:33:17