7

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

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

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

4

4 回答 4

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);
});
于 2013-05-18T19:22:01.557 回答
3

我可能会做类似的事情。您必须添加一些额外的代码来处理下拉菜单,但想法是一样的。

$('form input').keyup(function () {
    $.ajax({
      type: "POST",
      url: url,
      data: data,
      success: success,
      dataType: dataType
    });
});
于 2013-05-18T19:12:44.237 回答
1
$('#yourInputId').keyup (function () {
    $.post('http://yoururl.com', { value: $(this).val() }).done(function (data) {
        $('#feedbackDivId').html(data);
    });
});
于 2013-05-18T19:18:58.950 回答
1

$.ajax()每次触发更改事件时只需拨打电话!像这样:

$(document).on('keydown','input',function(){
    $.ajax({
        // options here
    });
});

虽然上述内容将有助于实现您想要的,但我必须建议不要触发持续的 AJAX 请求,因为如果您有大量流量,这会给服务器带来巨大的负载。您最好每隔 n 秒验证一次,或者验证客户端,或者在提交时验证......

更新

看来您不想捕获该change事件,您想知道何时输入了任何内容。结果,我更改了代码以捕获keydown事件。只要在专注于输入的同时按下一个键,这就会触发。

于 2013-05-18T19:09:31.613 回答