如何在每次表单输入字段更改时发送ajax请求?
How do you send an ajax request every time that a form input field changes?
例如,有一个输入字段。每次用户在该字段中键入一个键时,它都会发送一个带有该输入中当前文本的AJAX请求,并对其进行处理。我已经研究了Jquery中的change和keyup函数,但是当我在Jsfiddle中尝试它们时,它们没有做任何事情。做这种手术有标准的方法吗?我知道这在验证和其他东西中很常见。
<form>
<input id="test" type='text' >
<input type="submit" value="asdf">
</form>
$('input').on("change",(function(e){
alert("Hello");
});
我想要的效果就像这个游戏www.sporcle.com/games/g/nflteams#
您可以键入任何文本,如果它在正确答案集内,则表将更新以显示该答案。你永远不需要屈服。你认为他们是如何达到这种效果的?
在我看来,他们一定是在每次用户输入一个键时查询数据库,看看它是否是正确的答案。如果是,则更新表以显示答案。还有其他的方法吗?
每次更改都发送请求是不好的,延迟最后更改的ajax
var changeTimer = false;
$("your inputs").on("your change event",function(){
if(changeTimer !== false) clearTimeout(changeTimer);
changeTimer = setTimeout(function(){
/* your ajax here */
changeTimer = false;
},300);
});
我可能会做类似的事情。您必须添加一些额外的代码来处理下拉菜单,但思路是一样的。
$('form input').keyup(function () {
$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: dataType
});
});
只需在每次触发更改事件时调用$.ajax()
!像这样:
$(document).on('keydown','input',function(){
$.ajax({
// options here
});
});
虽然上面的方法可以帮助实现您想要的效果,但是我必须建议,如果您有大量的流量,那么发出持续的AJAX请求并不是很好的做法,因为这会给服务器带来巨大的负载。您最好每n秒验证一次,或者验证客户端,或者在提交时验证……
似乎您不想捕获change
事件,您想知道何时输入了任何内容。因此,我更改了代码以捕获keydown
事件。
$('#yourInputId').keyup (function () {
$.post('http://yoururl.com', { value: $(this).val() }).done(function (data) {
$('#feedbackDivId').html(data);
});
});
相关文章:
- ajax请求的顺序总是不同的
- 从ajax请求中获取javascript对象
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- JavaScript代码未正确检查ajax请求
- "日期“;AJAX请求返回的类型值未定义
- 在等待ajax请求时显示微调器并禁用页面
- 跨域ajax请求
- Ajax请求返回空的数据字符串,但首先得到了正确的数据
- Javascript-如何让脚本与Ajax请求的数据一起运行
- ajax请求成功,但可以'我看不到我的数据
- 如何将给定的curl命令复制为jquery ajax请求
- 为什么我能够从javascript控制台发送跨域ajax请求
- 一台特定计算机的Ajax请求数据未定义/失败
- 获取ajax请求的请求头
- 原型Ajax请求参数为嵌套json
- 可以't从AJAX请求中筛选数据
- jQuery Mobile Collapse上的AJAX请求
- 暂停函数执行流程,直到ajax请求完成