2017-03-17 73 views
0

当我使用.focusout()功能的jQuery看来,当我触发第二次的事件触发两次,这里是我的代码示例:.focusout()两次触发的第二个事件的jQuery

$(document).ready(function() { 
    var baseUrl = "http://annuityadvicecentre.dev/"; 
    if($('html').hasClass('ver--prize-soft')) { 
    $('#home_telephone').focusout(function() { 
     var softResponse = {}; 
     var inputVal = $(this).val(); 
     $.ajaxSetup({ 
     headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') } 
     }); 
     $.ajax({ 
      type: 'POST', 
      url: baseUrl + "lookup", 
      data: { 
      number: inputVal, 
      phone_type: "mobile", 
      }, 
      error: function() { 
      console.log('POST Error: Mobile'); 
      }, 
     }).done(function(data) { 
     // you may safely use results here 
     softResponse.isMobile = data; 
     }); 
     $.ajax({ 
      type: 'POST', 
      url: baseUrl + "lookup", 
      data: { 
      number: inputVal, 
      phone_type: "landline", 
      }, 
      error: function() { 
      console.log('POST Error: Landline'); 
      }, 
     }).done(function(data) { 
     // you may safely use results here 
     softResponse.isLandline = data; 
     }); 
     $(document).ajaxStop(function() { 
     console.log('All AJAX Requests Have Stopped'); 
     }); 
    }); 
    } 
}); 

对不起,凌乱的例子,因为我刚刚被白手创业这件事,但是你能看到我的包裹此事件的内容功能:

$('#home_telephone').focusout(function() {... 

围绕我的AJAX调用,现在由于某种原因,当我测试了这一点,在页面上并且不重点关注#home_telephone元素.ajaxStop()功能只运行一次,这是我想要的功能,但如果我然后单击该元素并再次取消对焦,.ajaxStop()函数将运行两次。任何想法为什么这可能会发生?由于

+0

我认为专注活动已在您的页面注册两次。 –

回答

0

尝试函数中添加e.stoppropogation(),如:

$('#home_telephone').focusout(function (e) { 
e.stopPropagation()(); 

//your code 
}); 
0

你每一个元素是聚焦时添加新ajaxStop听众。该focusout回调函数之外

$(document).ajaxStop(function() { 
    console.log('All AJAX Requests Have Stopped'); 
}); 

电话:只要移动。