jQuery - 在关注输入字段时运行函数
我有一个文本输入字段,当您单击该字段时,会触发 json 请求,并检索一些数据。
$("input").focus(function(){
var thefield = $(this);
$.getJSON("http://www.blabla.com/bla",
function(data){
alert(JSON.stringify(data));
thefield.val('blabla');
}
);
});
我怎样才能做到这一点,这个请求只能运行一次,而不是每次我关注文本字段时?但我仍然希望当我第二次、第三次等聚焦时,数据可用。
I have a text input field, on which when you click a json request fires off, and some data gets retrieved.
$("input").focus(function(){
var thefield = $(this);
$.getJSON("http://www.blabla.com/bla",
function(data){
alert(JSON.stringify(data));
thefield.val('blabla');
}
);
});
How can I do so this request only gets to run once and not every time I focus on the text field? But I still want data
to be available when I focus the 2nd, 3rd time etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在第一次点击时分配另一个函数或在 alt 属性中存储一些值来指示是否需要触发请求
Assign another function on the first click or store some value in alt attribute indicating whether you need to fire a request or not
像这样的事情就可以解决问题:
Something like this will do the trick:
如果您的
input
元素不共享相同的数据,请执行以下操作:如果它们共享数据,则代码几乎相同,但使用共享变量而不是使用
data
。您还可以创建一个小型 jQuery 插件来处理上述任何场景,并且还支持多个事件:
该插件的用法是:
为了好玩,已接受答案的改进版本:
If your
input
elements do not share the same data do this:If they do share data, it's nearly the same code but with a shared variable instead of using
data
.You can also create a small jQuery plugin to handle any of the above scenarios, and that also support multiple events:
Usage for this plugin would be:
And just for the kicks, an improved version of the accepted answer: