最近做项目又回到Web前端,遇到一个棘手的问题。
代码如下:
mobile: <input id="mobile" type="text" />
<a id="btnSubmit" href="javascript:void(0)">submit</a>
<script src="jquery.js"></script>
<script>
$('#mobile').blur(function() {
alert('blur');
});
$('#btnSubmit').click(function() {
alert('click');
});
</script>
先点击mobile输入域,让它聚焦,然后再点击submit的时候,会弹出blur,而click不会弹出,可见click事件并不会发生。IE8和FF均是如此,然后实际的项目中需要在用户点击submit时候,触发click事件,弹出对话框。
百般无奈,只得寻求workaround
1. 把click换成mousedown,click弹出了,但blur发生了两次,最后一次blur的结果把submit的结果给冲掉了(需求是:用户点击submit的时候,验证mobile不能为空,且报错,而未点击submit只是mobile域失去焦点,mobile为空不报错)。 弄了半天用什么时间戳表示用户点击和浏览器触发等,都很麻烦,后来同事想到个办法:
mobile: <input id="mobile" type="text" />
<a id="btnSubmit" href="javascript:void(0)">submit</a>
<script src="jquery.js"></script>
<script>
$('#mobile').blur(function(e) {
alert('blur');
});
$('#btnSubmit').mousedown(function(e) {
setTimeout(function() {
alert('click');
},100);
});
</script>
这样,mousedown事件就一定在blur事件之后执行了,且100毫秒的时间用户是感知不到的。厉害!
分享到:
相关推荐
4. 表单事件:submit(表单提交)、reset(表单重置)、focus(元素获得焦点)、blur(元素失去焦点)、change(表单元素值改变)等。 处理事件通常有两种方式:事件处理程序(event handler)和事件监听器(event ...
4. 表单事件:submit(表单提交)、reset(表单重置)、focus(元素获取焦点)、blur(元素失去焦点)等。 三、事件处理程序 1. 内联事件处理:在HTML标签中直接添加`onclick`、`onmouseover`等属性,如`('Clicked!...
在JavaScript编程中,事件和事件处理是至关重要的概念,它们使得用户与网页的交互成为可能。本章将详细讲解事件的定义、事件类型、事件处理器的语法以及如何处理各种事件。 首先,理解事件是非常基础的一步。事件...
JavaScript是Web开发中不可或缺的一部分,尤其在处理用户交互方面,事件和事件响应起着至关重要的作用。本篇文章将深入探讨JavaScript中的事件模型、事件处理方式以及常见事件类型,旨在帮助开发者更好地理解和应用...
在浏览器执行Javascript代码时,事件处理与DOM模型紧密相关,允许开发者响应用户的行为和浏览器的动作。例如,当用户点击一个按钮或页面加载完成时,都可以触发相应的事件。 #### 2. 常用浏览器事件 浏览器事件...
3. DOM2级事件处理程序:使用`addEventListener`和`removeEventListener`方法添加和移除事件监听器,支持事件冒泡和捕获,如`element.addEventListener('click', myFunction)`。 三、事件传播 1. 事件冒泡:事件从...
总结,JavaScript事件和jQuery框架是构建交互式网页的关键工具。理解并熟练运用它们,开发者可以创建出响应用户操作、提供丰富用户体验的网页应用。在实际项目中,结合HTML结构和CSS样式,通过JavaScript和jQuery...
JavaScript事件是网页交互的核心,它定义了当特定动作发生时,浏览器如何响应。这些动作可以是用户的操作,如点击、滚动、键盘输入,或者是页面加载、数据改变等。JavaScript事件的处理方式有多种,包括事件处理属性...
例如,用户单击按钮便产生一个click事件,而用户将鼠标移至超级链接上时,会触发mouseover事件。 事件处理程序能截取这些消息,并响应各种事件以响应用户各种交互操作。单击一个按钮能弹出一个窗口,即窗口的弹出是...
在JavaScript中,事件是浏览器或DOM(文档对象模型)中发生的一种特定情况,例如鼠标点击、页面加载或者键盘按键。当这些事件发生时,我们可以编写相应的函数来处理它们,这就是所谓的事件处理。 一、事件模型 ...
然而,在JavaScript中,事件代理通常使用事件冒泡而非事件捕拿,因为大部分浏览器默认支持冒泡,且它更适合大多数应用场景。 3. **事件代理的优势**: - **内存优化**:只需为父元素添加一个事件监听器,而不是为...
事件是JavaScript中的一种机制,它允许程序响应用户的操作或者浏览器的状态变化。事件处理通常包括事件触发、事件传播和事件处理函数三个部分。在JavaScript中,事件可以分为鼠标事件、键盘事件、表单事件、DOM事件...
如鼠标事件(click, mouseover, mouseout)、键盘事件(keydown, keyup, keypress)、触摸事件(touchstart, touchmove, touchend)和形式事件(submit, change, focus, blur)。这些事件对应着用户与页面的不同交互...
首先,JavaScript事件分为两类:浏览器事件和DOM(文档对象模型)事件。浏览器事件主要与用户的交互有关,如点击、滚动、提交表单等;DOM事件则关注于文档对象的状态改变,例如元素的加载、改变或删除。 1. 鼠标...
$("#myElement").on("click change focus blur", function(event) { // 根据event.type处理不同类型的事件 }); ``` **6. 事件解绑和触发** 使用`.off()`方法可以解除事件绑定,`.trigger()`则可以手动触发一个事件...
《jQuery效果与事件详解》 ...掌握jQuery中的事件和效果,能让你的网页交互更加丰富多彩。无论你是初学者还是经验丰富的开发者,深入理解并灵活运用jQuery,都将对你的Web开发工作带来极大的便利。
// 移除特定的click事件处理器 ``` jQuery中的事件对象包含了丰富的属性和方法,它们可以用来获取关于事件的详细信息或控制事件的行为。这些属性包括: - `altKey`:当事件触发时,alt键是否被按下。 - `ctrlKey`...
此外,为了更好地处理表单元素,jQuery提供了如`blur()`和`change()`这样的方法来处理失去焦点和内容改变事件。例如,当输入框失去焦点时可以显示文本并淡出: ```javascript $("input").blur(function(){ $(this)...
4. 表单事件:如 `submit`(表单提交)、`change`(输入字段值改变)、`focus`(元素获得焦点)、`blur`(元素失去焦点)。 三、阻止事件默认行为 有时我们需要阻止事件的默认行为,例如阻止表单提交、链接跳转等,...
- **表单事件**:`submit`(表单提交)、`reset`(表单重置)、`focus`(元素获得焦点)、`blur`(元素失去焦点)、`change`(元素值改变)。 - **文档和窗口事件**:`load`(页面加载完成)、`unload`(页面卸载)...