导航
电话
咨询
地图
顶部
当用户通过下拉菜单(``)选择值时,`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推广 】
相关推荐: Win10怎样安装PPT模板_Win10安装PPT模板教程【步骤】 Win11怎么忘记WiFi网络_Win11删除已保存无线连接【教程】 Django密码修改后会话失效的解决方案 Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】 LINUX下如何配置VLAN虚拟局域网_在LINUX交换机与服务器上的实现 如何使用Golang构建简易投票统计功能_Golang投票数据汇总与展示示例 Windows10系统怎么查看CPU温度_Win10性能监视器查看硬件数据 Mac如何与安卓手机传文件_Mac和Android设备互通【必备工具】 Go语言中slice追加操作的底层共享机制详解 如何在 Python 中将 ISO 8601 时间戳转换为日期并计算日期差值 如何使用Golang实现微服务事件驱动_使用消息总线解耦服务 如何使用Golang处理网络超时错误_Golang请求超时异常处理方法 Linux如何挂载新硬盘_Linux磁盘分区格式化与开机自动挂载【指南】 mac怎么看硬盘大小_MAC查看磁盘存储空间与文件占用【详解】 如何使用Golang开发简单的聊天室消息存储_Golang WebSocket数据持久化方法 MAC怎么截图并快速编辑_MAC自带截图快捷键与标注工具使用【方法】 c++如何使用std::bind绑定函数参数_c++ 占位符std::placeholders使用【详解】 Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】 如何使用Golang benchmark测量函数延迟_统计执行耗时 Win11怎么查看激活状态_查询Windows 11是否已永久激活【详解】 Win11怎么设置任务栏大小_Windows11注册表修改TaskbarSi值 Win11如何设置文件权限 Win11 NTFS文件夹所有权与安全设置【高级】 作用域操作符会影响性能吗_php静态调用性能分析【教程】 windows 10应用商店区域怎么改_windows 10微软商店切换地区方法 Win10系统字体模糊怎么办_Windows10高级缩放设置修复 Python函数缓存机制_lru_cache解析【指导】 php会话怎么开启_session_start函数的作用与使用时机【方法】 c++ namespace命名空间用法_c++避免命名冲突 Windows音频驱动无声音原因解析_声卡驱动错误修复步骤 如何在Golang中指定模块版本_使用go.mod控制版本号 Win11怎样激活系统密钥_Win11系统密钥激活步骤【攻略】 Python集合操作技巧_高效去重解析【教程】 Win11如何更改鼠标滚轮速度 Win11调整滑轮滚动行数【设置】 Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数 c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】 MAC怎么用连续互通相机里的“桌上视角”_MAC在视频通话中同时展示人脸和桌面 Windows 11如何开启文件夹加密(EFS)_Windows 11文件属性中加密内容以保护数据 Win11怎么调整屏幕亮度_Windows 11调节显示器亮度护眼设置【步骤】 Win11无法安装软件怎么办_Win11解除应用安装限制设置【修复】 Win11时间格式怎么改成12小时制 Win11时间格式切换教程【步骤】 微信JSAPI支付回调PHP怎么接收_处理JSAPI异步通知数据方法【指南】 Windows10系统怎么查看已保存密码_Win10凭据管理器查看Web Win10系统更新错误0x80240034怎么办 Win10更新错误解决法【方法】 Windows 11怎么关闭OneDrive的桌面备份_Windows 11管理OneDrive文件夹同步 GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息? Win11怎么关闭小组件_Win11禁用任务栏天气与小组件方法【设置】 php打包exe后无法写入文件_权限问题解决方法【教程】 Go语言中CookieJar的持久化机制解析:内存存储与自定义持久化方案 Python文件操作优化_大文件与流处理解析【教程】 Win11怎么设置快速访问_Windows11文件资源管理器主页
赣ICP备2024031479号