Javascript 用户填写表单时实时更新结果总数
我目前正在做一个项目,客户要求提供一个需要javascript帮助的功能,我不是javascript专家,我可以做一些基础工作,但我不知道从哪里开始,在网站上有一个表单(比如高级搜索),右边应该显示结果的总数,但它需要在填写表单时不断更新,以便在用户填写表单时更新结果总数以反映 我想也许可以用ajax来完成,传递输入的内容/值,执行查询,然后返回结果的总数,但是它如何处理每个输入,这不是太过分了吗,我试图告诉客户这将对服务器造成压力(当然会是这样的)但他们似乎一意孤行 任何帮助或技巧都将非常有用,或者如果您以前遇到过类似的情况,请务必让我知道Javascript 用户填写表单时实时更新结果总数,javascript,jquery,ajax,forms,Javascript,Jquery,Ajax,Forms,我目前正在做一个项目,客户要求提供一个需要javascript帮助的功能,我不是javascript专家,我可以做一些基础工作,但我不知道从哪里开始,在网站上有一个表单(比如高级搜索),右边应该显示结果的总数,但它需要在填写表单时不断更新,以便在用户填写表单时更新结果总数以反映 我想也许可以用ajax来完成,传递输入的内容/值,执行查询,然后返回结果的总数,但是它如何处理每个输入,这不是太过分了吗,我试图告诉客户这将对服务器造成压力(当然会是这样的)但他们似乎一意孤行 任何帮助或技巧都将非常有用
谢谢我倾向于避免这种事情,就像你说的那样,这会给服务器带来压力。以下是我为降低这种风险所做的几件事:
- 仅当用户输入至少3个字符时才执行搜索/计数
- 在内存存储(如或memcached)中缓存搜索项及其结果计数
- 如果您正在运行MySQL数据库,请使用MySQL全文搜索
大约有3097条记录与您的搜索相关
搜索:“Ap”
响应:大约有1567条记录与您的搜索相关
搜索:“苹果”
发出ajax请求
响应:
有542条记录与您的搜索相关
使用jQuery,您可以将一个函数附加到“高级搜索”中使用的每个输入控件的事件,以执行对服务器的调用并获得当前的结果数
这样,ajax服务器调用只会在每次输入字段完成且焦点移到别处时触发
当然,如果您有许多字段,那么每次完成或修改字段并移动焦点时,都会产生一个调用。在进行ajax调用之前,确保字段值已更改也是明智的。大致如下:
var tempVal = "";
// Each field that is used in the advanced search will need to have the
// advancedSearchInput class
$('.advancedSearchInput').focus(function() {
tempVal = $(this).val();
});
$('.advancedSearchInput').blur(function() {
if($(this).val() == tempVal) {
// Get advanced search values and make ajax call
}
});
模糊数似乎是一个很好的解决方案,但您如何将其实际实现到表单中,为每个输入/选择等附加一个ajax函数?