例如,有一个输入字段。每当用户在该字段中键入一个键时,它就会发送一个AJAX请求,其中包含当前输入的任何文本,并对其执行某些操作。我已经研究了Jquery中的更改和键盘函数,但是当我在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#
您可以键入任何文本,如果它在正确答案集中,则表格将更新以显示该答案。你永远不必提交。你怎么认为他们达到了这个效果?
在我看来,每当用户输入密钥时,他们必须查询数据库,看看它是否是正确的答案。如果是,他们更新表格以显示答案。有什么其他方法可以做到这一点?
答案 0 :(得分:13)
每次更改发送请求都很糟糕,在最后一次更改时延迟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);
});
答案 1 :(得分:3)
我可能会做类似的事情。 你必须添加一些额外的代码来处理下拉菜单,但想法是一样的。
$('form input').keyup(function () {
$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: dataType
});
});
答案 2 :(得分:1)
每次触发更改事件时,只需拨打$.ajax()
电话!像这样:
$(document).on('keydown','input',function(){
$.ajax({
// options here
});
});
虽然以上内容将有助于实现您的目标,但我必须建议解决常量AJAX请求并不是一个好习惯,因为如果您有很多需求,这会给服务器带来巨大负担交通。你最好每n秒验证一次,或者验证客户端,或者在提交时验证......
<强>更新强>
您似乎不想捕捉change
事件,您想知道何时输入任何内容。结果,我更改了我的代码以捕获keydown
事件。只要按下键同时聚焦在输入上,就会触发。
答案 3 :(得分:1)
$('#yourInputId').keyup (function () {
$.post('http://yoururl.com', { value: $(this).val() }).done(function (data) {
$('#feedbackDivId').html(data);
});
});