`

解决输入框失焦事件与按钮点击事件冲突的问题

阅读更多

在iPhone这样的移动端测试时,我们会发现onclick事件有大约半秒的延迟,这是因为iOS系统需要等待一段时间来判断用户是点击还是拖动,所以会有失焦与点击事件的冲突。

 

问题描述:

给一个输入框设置失焦事件之后,失焦事件总是优先其它事件先触发,导致输入完成之后点击提交按钮无效。

 

拓展:①mousedown:在用户按下了任意鼠标按钮时触发。不能通过键盘触发这个事件。

           ②mouseup:在用户释放鼠标按钮时触发。不能通过键盘触发这个事件。

 

解决方案:

方法1、通过给失焦事件设置延迟触发。

方法2、将按钮的点击(click)事件改为按下(mousedown)事件。

<!DOCTYPE html>  

<html lang="en">  

<head>  

    <meta charset="UTF-8">  

    <title>Title</title>  

    <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>  

    <style type="text/css">  

        .father{  

            width: 500px;  

            height: 300px;  

            background: green;  

            padding-top: 20px;  

        }  

        .father input {  

            width: 120px;  

            height: 28px;  

            border: 1px solid blue;  

        }  

        .father button{  

            width: 60px;  

            height: 28px;  

            margin-left: 10px;  

        }  

    </style>  

    <script>  

        function btn() {  

            alert("you click it");  

        }  

    </script>  

</head>  

<body>  

<div class="father" id="father" tabindex="1">  

    <input id="testInput" placeholder="请输入您的信息"><button id="testBtn" onclick="btn()">提交</button>  

</div>  

</body>  

<script>  

    //  鼠标按下事件  

    $("#testBtn").mousedown(function(){  

        alert("my button mousedown");  

    });       

    //  输入框失焦事件  

    $("#testInput").blur(function(){  

        alert("now blur  ~~~");  

    });  

    //  输入框失焦事件 延迟触发  

//    $("#testInput").blur(function(){  

//        setTimeout(function(){  

//            alert("now blur  ~~~");  

//        }, 300)  

//    });  

</script> 

</html>  

 

项目里还遇到一个问题,这里我是需要点击input框,弹出一个时间选择框。在IOS上发现点击input框后弹出时间选择框时,input会有焦点

$('#startDate').mousedown(function(e) {

          setTimeout(function(){  

               $("#startDate").blur();  

           }, 10);

});

 

 

 

 

.

分享到:
评论

相关推荐

    解决Js先触发失去焦点事件再执行点击事件的问题

    在本案例中,通过在blur事件中加入延时处理(使用setTimeout函数),可以解决点击事件被提前触发的问题。具体做法是,在blur事件处理函数中使用setTimeout延迟执行移除清除按钮的操作,给用户留出足够的时间完成点击...

    网页输入框不能输入解决办法

    ### 网页输入框不能输入解决办法 在日常使用浏览器的过程中,我们经常...通过这些方法,大多数情况下都能够解决问题,让输入框恢复正常功能。当然,在实际操作过程中还需要根据具体情况灵活调整策略,以达到最佳效果。

    [Android实例] 带clean按钮的输入框

    我们可以使用`android:drawableRight`属性来实现这一点,但更好的方法是使用`app:endIconMode`(对于Android支持库版本26及以上),这样可以避免与系统功能冲突: ```xml android:id="@+id/text_input_layout" ...

    键盘遮挡输入框 界面多个输入框

    3. **输入框焦点管理**: 对于多个输入框的情况,可以设置焦点转移逻辑,当用户完成一个输入框的输入并点击“下一步”或类似按钮时,自动跳转到下一个输入框,确保当前输入框总是在键盘上方。 4. **沉浸式键盘**: ...

    jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题

    本文主要介绍在使用jQuery处理`input`元素的`blur`事件与其他非表单元素的`click`事件时出现的冲突,以及如何解决这些问题。 ### 知识点一:blur事件和click事件的基本概念 - **blur事件**:在Web开发中,`blur`...

    bootstrap下拉列表与输入框组结合的样式调整

    下面我们将深入探讨如何在Bootstrap中调整下拉列表与输入框组结合的样式。 首先,输入框组在HTML中的基本结构是`&lt;div class="input-group"&gt;`,这个容器可以包含一个`&lt;input&gt;`元素,以及其他类型的元素如`&lt;span&gt;`...

    解决聊天界面,软键盘和表情框切换问题

    参考微信的设计,表情按钮通常位于输入框旁边,点击后表情框会覆盖部分聊天界面。这里需要注意: 1. **表情框的显示和隐藏**:可以使用动画效果,如滑动、淡入淡出,使切换过程更加自然。同时,确保表情框的大小和...

    jQuery验证码输入框代码.zip

    在这个名为"jQuery验证码输入框代码.zip"的压缩包中,我们可能找到了一个专为验证码输入设计的高效解决方案。 验证码的主要目的是验证用户是否是真实的、有意识的人,而非机器。传统的验证码可能包括扭曲的文本图像...

    jQuery如何解决IE输入框不能输入的问题

    此外,这种方法可能会覆盖其他可能存在的焦点事件处理,因此在实际应用时,应确保与现有代码兼容,并避免产生冲突。 总的来说,解决IE输入框不能输入的问题主要涉及到理解和利用浏览器的默认行为,以及合理地应用...

    Python tkinter教程-04:输入框

    Python tkinter教程-04:输入框 文章目录0 准备工作1介绍2 基本用法3 通用方法4 启用与禁用5 显示方法6 获取内容7 插入与删除字符8 清空字符9 初始化字符10 重置字符 0 准备工作 要使用,先导入:import tkinter as...

    JavaFX+Jfoenix 学习笔记(八)--事件、监听、属性绑定源码

    在JavaFX中,事件是用户与应用程序交互时发生的动作,如点击按钮、输入文本等。每个事件都有一个特定的类型,比如`MouseEvent`、`ActionEvent`等。事件处理主要通过定义事件处理器来实现,例如,可以使用`...

    Android Activity 作为事件类

    6. **生命周期与事件处理**: Activity的生命周期方法如`onResume()`, `onPause()`等也可以用来处理特定的事件,比如在`onResume()`中启动定时任务,在`onPause()`中停止。 7. **触摸事件冲突**: 多个View同时...

    C#模拟鼠标点击 键盘输入

    Windows Forms中的`Control`类提供了`PerformClick`方法,可以模拟按钮的点击事件。但请注意,这仅适用于窗体内的控件,而非屏幕上的任意位置。 二、模拟键盘输入 1. 使用Windows API的SendInput函数: `SendInput...

    js点击button按钮跳转到另一个新页面

    - 当使用`window.location`进行页面跳转时,最好避免与页面上的其他JavaScript函数调用发生冲突。 - 使用`window.open`时,不同浏览器可能对其弹窗行为有不同限制,需要考虑兼容性问题。 - 在页面跳转前,进行必要的...

    layer的prompt弹出框,点击回车,触发确定事件的方法

    3. 通过"yes"回调函数处理确定按钮的点击事件,避免与"success"回调函数内的事件冲突。 4. 确保弹出框关闭逻辑正确执行,并且在适当的时机清除弹出框,以保持用户界面的整洁。 对于Web前端开发人员来说,掌握layer...

    输入法的回车与消息发送快捷键回车的冲突解决方法

    绑定keyup事件会将输入法中的英文文字输入到文字框并直接触发发送按钮 键盘事件: 当一个按键被pressed或者released,在每一个浏览器中都可能会触发三种键盘事件 keydown keypress keyup keydown事件发生在按键被按...

    PopWindow测试

    例如,如果PopWindow中包含可点击的元素(如按钮或输入框),可能会与当前Activity的焦点冲突,导致键盘无法正确弹出或者按钮点击事件不响应。解决这个问题通常需要对PopWindow的showAsDropDown()或showAtLocation()...

    datetimepicker加上清空功能

    在实际项目中,开发者可能会遇到更多复杂情况,比如与其他插件的兼容性问题、样式冲突等。因此,了解并熟练掌握datetimepicker的API文档,以及对Bootstrap和jQuery的基本操作,是解决此类问题的关键。此外,对于开源...

    r键按钮提交表单代码.rar_r键按钮提交表单代码

    标签“r键按钮提交表单代码”强调了这个功能的实现代码,这通常意味着开发者希望提供一个可复用的解决方案,使得用户可以通过自定义的键盘快捷键提交表单。 至于压缩包中的文件"jiaoben2761",根据其名称推测可能是...

Global site tag (gtag.js) - Google Analytics