每次表单输入字段更改时,如何发送ajax请求?

时间:2013-05-18 19:06:41

标签: javascript jquery validation

例如,有一个输入字段。每当用户在该字段中键入一个键时,它就会发送一个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#

您可以键入任何文本,如果它在正确答案集中,则表格将更新以显示该答案。你永远不必提交。你怎么认为他们达到了这个效果?

在我看来,每当用户输入密钥时,他们必须查询数据库,看看它是否是正确的答案。如果是,他们更新表格以显示答案。有什么其他方法可以做到这一点?

4 个答案:

答案 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);
    });
});