优化
This commit is contained in:
@@ -689,21 +689,30 @@ const originalHandleMaterialCodeChange = async () => {
|
|||||||
|
|
||||||
// 记录上次输入时间,用于判断是否是扫码枪输入
|
// 记录上次输入时间,用于判断是否是扫码枪输入
|
||||||
let lastInputTime = 0
|
let lastInputTime = 0
|
||||||
// 记录输入内容,用于判断是否是新的扫码
|
// 记录是否正在接收扫码输入
|
||||||
const previousInput = ''
|
let isScanning = false
|
||||||
|
|
||||||
// 处理键盘按下事件
|
// 处理键盘按下事件
|
||||||
const handleKeyDown = (event: KeyboardEvent) => {
|
const handleKeyDown = (event: KeyboardEvent) => {
|
||||||
// 获取当前时间
|
// 获取当前时间
|
||||||
const currentTime = Date.now()
|
const currentTime = Date.now()
|
||||||
|
|
||||||
// 如果输入速度非常快(小于100ms),认为是扫码枪输入
|
// 计算时间差
|
||||||
if (currentTime - lastInputTime < 100 && formData.inputMaterialCode) {
|
const timeDiff = currentTime - lastInputTime
|
||||||
// 扫码枪通常会以回车键结束,这里不做处理
|
// 检查是否是回车键(扫码枪通常以回车键结束)
|
||||||
} else if (event.key.length === 1 && !event.ctrlKey && !event.altKey) {
|
if (event.key === 'Enter') {
|
||||||
// 如果是新的输入(不是快速连续输入),清空输入框
|
// 扫码结束,标记为不在扫描中
|
||||||
// 这样可以确保每次扫码都从空输入框开始
|
isScanning = false
|
||||||
|
// 不阻止默认行为,让表单可以正常提交
|
||||||
|
}
|
||||||
|
// 检查是否是新的扫码开始
|
||||||
|
// 当时间间隔大于300ms,且不是修饰键,且不是功能键时,认为是新的扫码开始
|
||||||
|
else if (timeDiff > 300 && !event.ctrlKey && !event.altKey && !event.metaKey) {
|
||||||
|
// 清空输入框,准备接收新的扫码数据
|
||||||
formData.inputMaterialCode = ''
|
formData.inputMaterialCode = ''
|
||||||
|
// 标记为开始扫描
|
||||||
|
isScanning = true
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新上次输入时间
|
// 更新上次输入时间
|
||||||
|
|||||||
Reference in New Issue
Block a user