每次表单输入字段更改时,如何发送ajax请求?
例如,有一个输入字段。 每次用户在该字段中键入一个键时,它都会发送一个AJAX请求,其中包含当前输入的任何文本,并对其执行某些操作。 我已经研究了Jquery中的更改和键盘函数,但是当我在Jsfiddle中尝试它们时,它们什么都不做。 有没有一种标准的方法来进行这种操作? 我知道它对validation和东西很常见。
$('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 }); });
每次触发change事件时,只需调用$.ajax()
! 像这样:
$(document).on('keydown','input',function(){ $.ajax({ // options here }); });
虽然上述内容将有助于实现您的目标,但我必须告知,启动常量AJAX请求并不是一个好习惯,因为如果您有大量流量,这会给服务器带来巨大负担。 你最好每n秒validation一次,或者validation客户端,或者在提交时validation……
UPDATE
您似乎不想捕捉change
事件,您想知道何时输入任何内容。 结果,我已经改变了我的代码以捕获keydown
事件。 只要按下键同时聚焦在输入上,这将触发。
$('#yourInputId').keyup (function () { $.post('http://yoururl.com', { value: $(this).val() }).done(function (data) { $('#feedbackDivId').html(data); }); });