Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何禁用点击输入?_Javascript_Ios_Dom Events - Fatal编程技术网

Javascript 如何禁用点击输入?

Javascript 如何禁用点击输入?,javascript,ios,dom-events,Javascript,Ios,Dom Events,我正在为iPad开发一款应用程序。(这是一个内部应用程序,因此它实际上只适用于iPad,而不适用于其他设备。) 在应用程序的第1页,我有一个指向第2页的链接。但是,因为我需要保持独立模式,所以我阻止了链接上的默认单击行为,而是更改了位置对象。第2页恰好有一个文本输入,其坐标与我刚才单击的链接的坐标完全相同。尽管我已经禁用了链接上的单击行为,但现在链接所在的输入上仍会触发一个单击事件。(这是因为触发触摸端和触发点击之间存在延迟) 我在点击输入时尝试了event.preventDefault()和e

我正在为iPad开发一款应用程序。(这是一个内部应用程序,因此它实际上只适用于iPad,而不适用于其他设备。)

在应用程序的第1页,我有一个指向第2页的链接。但是,因为我需要保持独立模式,所以我阻止了链接上的默认单击行为,而是更改了
位置
对象。第2页恰好有一个文本输入,其坐标与我刚才单击的链接的坐标完全相同。尽管我已经禁用了链接上的单击行为,但现在链接所在的输入上仍会触发一个单击事件。(这是因为触发
触摸端
和触发
点击
之间存在延迟)

我在点击输入时尝试了
event.preventDefault()
event.stopPropagation()
,但点击事件仍在启动并打开iPad键盘

有没有办法阻止这一切?谢谢

编辑:将输入设置为
只读
禁用
不是一个选项,因为当用户有意为输入设置焦点时,输入需要工作(我将使用
触摸端
事件来完成此操作)


问题在于,在第一页上,用户触摸链接,触发
touchend
单击事件。
touchend
更改
location.pathname
,加载第二个页面后触发
单击事件。因为第二个页面在触发
单击事件的相同坐标处有一个文本字段,
事件.target
成为
输入
,到目前为止,所有禁用此事件的尝试都失败。

是否尝试将输入设置为只读?

是否尝试将输入设置为只读?

在从第1页转换到第2页时,使用微调器覆盖窗口。250-300毫秒的延迟应该足以让用户将爪子从屏幕上拿开。

当您从第1页过渡到第2页时,用微调器覆盖窗口。250-300毫秒的延迟应该足以让用户将爪子从屏幕上拿开。

我不希望它是只读的。这是一个合法的输入。我希望输入获得焦点,并且当用户主动点击键盘时显示键盘(为此,我稍后将使用触摸事件)。但是,我不希望输入获得焦点,因为输入的坐标与手指触摸链接以更改视图时的坐标相同。@DerekHenderson将这些细节移到问题上。它可以帮助人们更好地理解你的目标。这是唯一的输入吗?因为如果是这样的话,情况会立即得到关注,键盘就会出现。(移动/平板电脑的更好用户体验)@JonathanMuszkat,表单中有3个输入,但显然只有一个输入与上一页的锚相同。我已经检查了该事件,并且该特定输入上的单击事件已经被触发。我不希望它是只读的。这是一个合法的输入。我希望输入获得焦点,并且当用户主动点击键盘时显示键盘(为此,我稍后将使用触摸事件)。但是,我不希望输入获得焦点,因为输入的坐标与手指触摸链接以更改视图时的坐标相同。@DerekHenderson将这些细节移到问题上。它可以帮助人们更好地理解你的目标。这是唯一的输入吗?因为如果是这样的话,情况会立即得到关注,键盘就会出现。(移动/平板电脑的更好用户体验)@JonathanMuszkat,表单中有3个输入,但显然只有一个输入与上一页的锚相同。我已经检查了该事件,并且该特定输入上的一个单击事件已被触发。如果我要使用此选项,我宁愿将输入设置为
readonly
,然后设置一个超时,在大约200毫秒后删除
readonly
属性。但是,这并不能回答如何防止/取消/禁用单击事件的问题。如果我要选择此选项,我宁愿将输入设置为
readonly
,然后设置一个超时,在大约200毫秒后删除
readonly
属性。但是,这并不能回答如何防止/取消/禁用单击事件的问题。您可以在单击侦听器内设置一个touchend事件侦听器,以防止默认事件并将其自身删除。这样只会取消第一次点击。谢谢——这不是解决方案,但为我指明了正确的方向。我在方法中添加了
event.stopPropagation
event.preventDefault
来更改
touchend
上的
location.pathname
并防止触发对表单的单击。您可以在单击侦听器中设置一个touchend事件侦听器,以防止默认值并删除其本身。这样只会取消第一次点击。谢谢——这不是解决方案,但为我指明了正确的方向。我在方法中添加了
event.stopPropagation
event.preventDefault
,该方法在
touchend
上更改了
位置.pathname
,并阻止了对表单的单击被触发。