嗨,你们这些了不起的人!
这次我的问题是测试是否使用模糊语句发生了鼠标单击。
我有一个全局解决方案,其中每个输入字段都在 BLUR 上进行验证。在此事件中,我需要测试是否已单击某个元素(即 helpBubble),如果已单击,我不希望发生验证,但是,如果尚未单击该特定元素,则仍需要验证即将发生。
任何帮助将不胜感激!
blur
先前聚焦元素的事件将在新聚焦元素的事件之前触发click
。因此,除非您添加超时,否则您无法根据要移动的内容阻止验证 onblur。例如:
var validationTimer;
$('#myform input').blur(function(){
var blurred = $(this);
validationTimer = setTimeout(function(){
validationTimer = null;
// Perform Validation on 'blurred'.
},100);
});
$('.helpbubble').click(function(){
if (validationTimer){
clearTimeout(validationTimer);
validationTimer = null;
}
});
这将在执行验证之前在模糊后等待 100 毫秒,但如果在该时间范围内发生点击(几乎会立即发生),它将在发生之前被取消。
编辑:这是一个工作示例:http: //jsfiddle.net/9SzDP/