2

我有一个搜索表单,可以在指定的 div 中显示实时结果(查看使用 Jquery 过滤结果

我稍微修改了脚本,现在当用户选中其中一个复选框时,结果 div 会自动刷新。加载函数由 onChange 事件处理。

有没有办法让ajax在指定时间后加载结果脚本?

例如,如果我选择一个复选框,则脚本应等待 2 秒才能加载脚本。通过这种方式,用户可以检查,例如,2 或 3 个复选框,当它停止选择时,ajax 将加载脚本。

- 编辑 -

脚本的 ajax 调用不是通过函数完成的,这是代码:

$(document).ready(function()
    {
        $('#category_filter').click(function()
        {

            var catArray = new Array();
            var j = 0;
            for(var i = 0; i < <?php echo $categories_count;?>; i++)
            {
                if(document.category_filter.filter_id[i].checked == 1)
                {
                    catArray[j] = document.category_filter.filter_id[i].value;
                    j++;
                }
            }
if(catArray[0])
            $.ajax(
            {
                type:    "POST",
                 url:     "index.php?action=ticket-search",
                data:    ({ filter: 'category',filter_id : catArray.toString() }),
                success: function(msg)
                {
                    $('#t_content').html(msg)
                                .hide()  
                                .fadeIn(700, function() {});  
                }
            });
          });
        });
      });
4

3 回答 3

1

尝试使用 setTimeout。

例子

setTimeout("alert('hello')",2000);
于 2009-12-07T13:13:44.173 回答
1

使用该setTimout功能。像这样:

var timer = setTimeout(yourFunction(), 2000);

但是,请确保在检查新按钮时附加一个事件以清除超时,否则您最终会多次触发 Ajax。

if(timer) { clearTimout(timer); }

var timer = setTimeout(yourFunction(), 2000);

于 2009-12-07T13:15:25.183 回答
0

您可以使用 setTimeout() 调用等待几秒钟。

  var t = setTimeout(myAjaxFunction, 2000); //wait two seconds

如果您允许用户单击多个复选框,您可能需要检查是否已设置超时。这是为了避免多个 AJAX 调用每次等待 2 秒。那么逻辑将是:

  1. 用户点击
  2. 有超时吗?如果是,则忽略单击
  3. Else 为 AJAX 调用设置超时
于 2009-12-07T13:12:52.707 回答