【发布时间】:2018-10-19 19:31:33
【问题描述】:
我有这个在桌面浏览器上完美运行。它检查用户何时在邮政编码文本输入字段中按下键:
zip_field.addEventListener(
'keydown',
function(evt){check_zip({evt:evt, zip_field: zip_field, submit_button: submit_button})},
false
)
check_zip 函数在底部有这个,用于在用户输入字母等时取消按键:
if(prevent_key)
{
evt.preventDefault()
evt.stopPropagation()
return false;
}
在移动浏览器上,if 语句的处理方式与桌面浏览器一样,但仍允许字符通过。但是,如果我在其中设置断点并单步执行代码,它就可以正常工作!
我在 Android 上的 Chrome 和 Firefox 中进行了测试,并且两者都发生了。我还需要在移动设备上做些什么来防止/取消密钥并防止它出现在输入框中吗?
更新:我能够在 iPhone 上进行测试,并且它在那里正常工作。所以它只在 Android 上坏了(FF、Chrome 和三星浏览器都失败了)。
【问题讨论】:
-
为了使
return false生效,请将{check_zip(替换为{ return check_zip(。 -
@trincot 我刚刚尝试过,但它仍然发生在 Android 上。
-
这似乎是 Android 上的某种竞争条件,因为如果我输入断点并逐步执行它,它就可以正常工作。但我不明白为什么没有其他浏览器有这个问题。
-
什么断点?你的意思是调试断点?
标签: javascript events keydown