导航
电话
咨询
地图
顶部
当用户通过下拉菜单(``)选择值时,`onkeyup` 事件无法触发,导致依赖该事件的自动填充逻辑失效;应改用 `onchange` 事件,并修正 dom 查询选择器与类名匹配问题。
在 Web 表单开发中,实现“选中即填充”(如根据产品编号自动补全数量、单价、折扣等字段)是常见需求。但许多开发者会误用事件监听方式——例如为 元素绑定 onkeyup,这在实际操作中完全无效,因为下拉框不触发键盘释放事件;只有 onchange(选项变更后失去焦点或显式提交时)才可靠响应用户选择。
首先,确保 HTML 结构语义正确:
⚠️ 注意:PHP 循环中 echo '...' 存在语法错误,应改为 $row['user_id'](假设字段名为 user_id),否则将输出空值或报错。
修复后的完整 JS 示例:
function GetDetail(row) { const currentRow = row; const selectEl = currentRow.querySelector(".scode"); const selectedValue = selectEl.value; // 清空逻辑(选中“默认项”时) if (selectedValue === "0" || selectedValue.trim() === "") { currentRow.querySelector(".qty").value = ""; currentRow.querySelector(".price1").value = ""; currentRow.querySelector(".discunt").value = ""; return; } // 发起 AJAX 请求(生产环境建议使用 fetch API) const xhr = new XMLHttpRequest(); xhr.open("GET", "gfg.php?user_id=" + encodeURIComponent(selectedValue), true); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { try { const data = JSON.parse(xhr.responseText); // 确保返回数组长度足够,防止索引越界 currentRow.querySelector(".qty").value = data[0] || ""; currentRow.querySelector(".price1").value = data[1] || ""; currentRow.querySelector(".discunt").value = data[2] || ""; } catch (e) { console.error("JSON parse failed:", e, xhr.responseText); } } else { console.warn("AJAX request failed:", xhr.status); } } }; xhr.send(); }
遵循以上规范,即可彻底解决“下拉选择后自动填充不生效”的问题,保障表单交互的稳定性与用户体验一致性。
# ai # mac # html # js # 前端 # json # 后端 # php # javascript # java # 浏览器 # mysql # ajax
相关栏目: 【 行业资讯 】 【 网络运营 】 【 GEO优化 】 【 营销推广 】 【 SEO优化 】 【 技术教程 】 【 代码知识 】 【 AI推广 】
相关推荐: Windows电脑如何进入安全模式?(多种按键方法) Win11怎么关闭SmartScreen_禁用Windows Defender筛选器教程【步骤】 如何使用Golang搭建Web开发环境_快速启动HTTP服务 Win11怎么查看局域网电脑_Windows 11网络邻居发现设置【技巧】 php8.4如何配置ssl证书_php8.4https访问配置指南【教程】 MAC如何快速搜索大文件_MAC磁盘空间分析与冗余数据清理【方法】 Win11鼠标灵敏度怎么调 Win11鼠标指针移动速度设置【教程】 LINUX如何开放防火墙端口_Linux firewalld与iptables开放端口命令【安全配置】 Win11怎么设置任务栏大小_Windows11注册表修改TaskbarSi值 Win11怎么开启游戏模式_Win11设置游戏选项卡优化 GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息? 如何在 Go 中高效缓存与分发网络视频流 Win11怎么关闭粘滞键_彻底禁用Windows 11连按Shift粘滞键【步骤】 Win11怎么清理C盘系统日志_Win11清理系统日志文件【步骤】 php文件怎么变mp4保存_php输出视频流保存为mp4操作【操作】 LINUX怎么设置系统语言_LINUX修改中文环境 Win10怎么查看内存时序参数_Win10CPU-Z或Thaiphoon读取颗粒详细信息【查询】 如何解决Windows时间不准的问题?(自动同步设置) 如何在 PHP 中按相同键合并两个关联数组为二维数组 Win11此电脑不在桌面上_Windows 11桌面图标设置找回【步骤】 Win11怎么更改任务栏颜色_Windows11个性化重音色设置 Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置 Win10如何卸载Skype_Win10卸载Skype步骤【步骤】 如何在包含多值的列中精准搜索指定演员? 如何使用Golang开发简单的聊天室消息存储_Golang WebSocket数据持久化方法 如何在Golang中处理二进制数据_Golang io与encoding/binary二进制操作方法 Win11怎么格式化U盘_Win11系统U盘格式化与文件系统选择【教程】 Win10系统怎么查看显卡温度_Win10任务管理器GPU温度 Win11怎么清理C盘临时文件_Win11清理C盘临时文件教程【方法】 Win11如何添加/删除输入法 Win11切换中英文输入法快捷键【设置】 Windows11如何设置专注助手_Windows11专注助手使用攻略【技巧】 php做exe支持多线程吗_并发处理实现方式【详解】 Win11怎么关闭自动更新 Win11永久关闭系统更新的有效方法【技巧】 Windows10系统怎么查看IP地址_Win10网络连接状态详细信息 windows如何测试网速_windows系统网络速度测试方法 c++ std::atomic如何保证原子性 c++ CAS操作原理【底层】 Win11怎么开启上帝模式_创建Windows 11 God Mode全能文件夹【技巧】 Win11右键反应慢怎么办 Win11优化右键菜单加载速度【技巧】 Mac如何使用听写功能_Mac语音输入打字【效率技巧】 PythonDocker高级项目部署教程_多容器管理与CI/CD流水线 php怎么连接数据库_MySQL数据库连接的基础代码编写【说明】 c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】 Windows怎样关闭开始菜单广告_Windows关闭开始菜单广告设置【步骤】 如何使用正则表达式批量替换重复的“-”模式为固定字符串 Windows怎样拦截WPS弹窗广告_Windows拦截WPS弹窗广告设置【步骤】 如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例 Win10怎么设置开机密码_Windows10账户登录密码设置与取消 php控制舵机角度怎么调_php发送pwm信号控制舵机转动【解答】 Windows7怎么找回经典开始菜单_Windows7经典菜单找回步骤【方法】 Python数据抓取合法性_合规说明【指导】
赣ICP备2024031479号