如何只使用焦点事件加载json一次

时间:2017-06-21 13:02:18

标签: javascript jquery html css json

我的focus基本活动如下:

(document).on("focus", '#checkin,#checkout', function() {
  $.getJSON('data.json', function(data) {
    //load here...
  });
});

我想加载我的json数据,实际上当我专注于我的输入时代码正常工作.json数据已经加载但是如果我专注于输入两次我会看到结果..

如何在我将输入重点放在时加载我的json数据

Plunker Demo With Full Project

2 个答案:

答案 0 :(得分:0)

您可以使用布尔标志来测试事件是否已被触发:

var focused = false;
$(document).on("focus", '#checkin,#checkout', function() {
  if (!focused) {
    console.log('focused!!');
    focused = true;
  }
});

<强>演示:

&#13;
&#13;
var focused = false;
$(document).on("focus", '#checkin,#checkout', function() {
  if (!focused) {
    console.log('focused!!');
    focused = true;
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="checkin" />

<input id="checkout" />
&#13;
&#13;
&#13;

或者作为替代方案,您可以使用jQuery .off()方法删除事件处理程序,或.one() method仅将其绑定一次。

答案 1 :(得分:0)

获取json数据时可以使用此代码:

  $.getJSON('data.json', function(data) {
     element.find('#checkin').focus();
     element.find('#checkout').focus();
  });