jQuery行内编辑插件下拉选择时将文本存储到VARCHAR数据库字段的解决方案
可行解决方案(无需修改数据库字段类型)
方案1:前端调整Tabledit下拉配置
你当前的下拉配置规则为「键为提交存储值、值为前端显示文本」,直接修改键值对结构,让插件直接提交文本值即可:
将原有配置中的[6, 'tipo_cliente','{"1":"CONTADO","2":"CREDITO"}']
修改为[6, 'tipo_cliente','{"CONTADO":"CONTADO","CREDITO":"CREDITO"}']
修改后用户选中对应选项时,插件会直接提交文本值到后端,可直接存入VARCHAR类型字段。
方案2:后端做值映射(更稳妥,推荐)
如果担心前端修改影响已有逻辑,可直接在action.php的存储逻辑中增加转换规则:
// 接收插件提交的tipo_cliente参数 $tipo_cliente = $_POST['tipo_cliente']; // 定义数字到文本的映射关系 $tipo_map = [ '1' => 'CONTADO', '2' => 'CREDITO' ]; // 转换为对应文本,同时兼容已有存量的非枚举文本值 $save_value = isset($tipo_map[$tipo_cliente]) ? $tipo_map[$tipo_cliente] : $tipo_cliente; // 后续将$save_value写入数据库对应字段即可
该方案无需修改前端代码,也不会影响存量数据,风险更低。
补充说明
如果需要兼容存量数据的回显正常,从数据库读取数据渲染表格时直接返回文本值即可,Tabledit会自动匹配对应下拉选项显示。
内容的提问来源于stack exchange,提问作者Skuiz
相关产品推荐
相关产品推荐

