如何修复下拉框选择后自动填充表单字段失效的问题
发布时间 - 2025-12-29 00:00:00 点击率:次本文详解为何使用 `
在 Web 表单开发中,常见需求是:当用户从下拉列表(
✅ 正确做法:仅使用 onchange 绑定下拉框
将原 HTML 中的:
✅ 改为(移除 onkeyup,仅保留 onchange):
⚠️ 注意: 的 change 事件会在用户完成选择并失去焦点(或按回车确认)时触发,这是语义正确的时机,无需模拟键盘行为。
✅ 修正 JavaScript 中的 DOM 查询与类名匹配
原 JS 中存在两个关键错误:
- row.querySelector(".price").value = myObj[1]; → 实际 input 的 class 是 "price1"(见 HTML 中 ),而非 "price";
- row 参数未在函数作用域内稳定引用,尤其在异步回调中易丢失上下文。
✅ 推荐写法(含容错与可读性优化):
function GetDetail(row) {
const tr = row || this.closest('tr'); // 确保 tr 引用可靠
const select = tr.querySelector('.scode');
const str = select.value.trim();
// 清空逻辑(支持清空选项,如 value="0")
if (!str || str === '0') {
tr.querySelector('.qty').value = '';
tr.querySelector('.price1').value = '';
tr.querySelector('.discunt').value = '';
return;
}
// 发起 AJAX 请求(建议
升级为 fetch API)
fetch(`gfg.php?user_id=${encodeURIComponent(str)}`)
.then(response => {
if (!response.ok) throw new Error('Network response was not ok');
return response.json();
})
.then(data => {
// 假设返回数组格式:[qty, price, discount]
tr.querySelector('.qty').value = data[0] || '';
tr.querySelector('.price1').value = data[1] || '';
tr.querySelector('.discunt').value = data[2] || '';
})
.catch(err => {
console.error('Auto-fill failed:', err);
alert('数据加载失败,请检查网络或服务端配置');
});
}✅ HTML 结构必须合法且完整
原代码中
# mysql
# php
# javascript
# java
# html
# js
# json
# ajax
# 浏览器
# 后端
# mac
# ai
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何为API生成Swagger或OpenAPI文档
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
北京的网站制作公司有哪些,哪个视频网站最好?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel如何实现用户注册和登录?(Auth脚手架指南)
如何快速搭建高效可靠的建站解决方案?
如何用花生壳三步快速搭建专属网站?
如何用PHP工具快速搭建高效网站?
Laravel怎么实现模型属性的自动加密
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
简单实现Android文件上传
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Java遍历集合的三种方式
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
高端建站如何打造兼具美学与转化的品牌官网?
如何在阿里云部署织梦网站?
如何用已有域名快速搭建网站?
javascript中对象的定义、使用以及对象和原型链操作小结
Laravel如何使用查询构建器?(Query Builder高级用法)
常州企业网站制作公司,全国继续教育网怎么登录?
5种Android数据存储方式汇总
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
如何快速搭建个人网站并优化SEO?
jQuery validate插件功能与用法详解
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
详解vue.js组件化开发实践
专业商城网站制作公司有哪些,pi商城官网是哪个?
java ZXing生成二维码及条码实例分享
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Python正则表达式进阶教程_复杂匹配与分组替换解析
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Android实现代码画虚线边框背景效果
Laravel如何实现事件和监听器?(Event & Listener实战)
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Java类加载基本过程详细介绍
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Laravel如何发送系统通知?(Notification渠道示例)
在Oracle关闭情况下如何修改spfile的参数
Android okhttputils现在进度显示实例代码
太平洋网站制作公司,网络用语太平洋是什么意思?
Laravel怎么为数据库表字段添加索引以优化查询
如何确保西部建站助手FTP传输的安全性?
利用vue写todolist单页应用
如何在建站之星网店版论坛获取技术支持?
详解jQuery中的事件
如何快速配置高效服务器建站软件?


升级为 fetch API)
fetch(`gfg.php?user_id=${encodeURIComponent(str)}`)
.then(response => {
if (!response.ok) throw new Error('Network response was not ok');
return response.json();
})
.then(data => {
// 假设返回数组格式:[qty, price, discount]
tr.querySelector('.qty').value = data[0] || '';
tr.querySelector('.price1').value = data[1] || '';
tr.querySelector('.discunt').value = data[2] || '';
})
.catch(err => {
console.error('Auto-fill failed:', err);
alert('数据加载失败,请检查网络或服务端配置');
});
}