首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript实现模糊推荐的input框(类似搜索框)

如何用JS实现一个类似搜索框的输入框呢,再填充完失去焦点时,自动填充配置项,最终效果如下图: 实现很简单,但是易用性会上升一大截,需要用到的有jquery-ui的autocomplete,jquery的...keyup事件,以及ajax与服务端的交互。...事件 3、ajax与后端交互 简单来说: 1、文本输入框的每次键入,触发一个keyup事件; 2、事件的处理方式是向后端请求模糊推荐的项items,这里的返回数据结果是: { "errno": 0;..."pathN"] } 3、autocomplete自动填充hidden输入框,其余的事情jquery-ui会为你处理好; 4、当你点选完成,或者是输入完成后,path框失去焦点(blur事件...)的时候,会从后端请求数据,自动填充好各个输入框add_field。

4.5K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS基础知识总结(五):防抖和节流

    作者:前端林子 https://cloud.tencent.com/developer/article/1380512 引入 首先举一个例子: 模拟在输入框输入后做ajax查询请求,没有加入防抖和节流的效果...> 效果: 在输入框里输入一个,就会触发一次“ajax请求”(此处是console)。...1.2 应用场景 (1) 用户在输入框中连续输入一串字符后,只会在输入完后去执行最后一次的查询ajax请求,这样可以有效减少请求次数,节约请求资源; (2) window的resize、scroll事件...这就会导致每一次高频事件都会取消前一次的超时调用,导致事件处理程序不能被触发; 2.只有当高频事件停止,最后一次事件触发的超时调用才能在delay时间后执行; 效果: 加入防抖后,当持续在输入框里输入时...,会安装代码中的设定,每1秒执行一次ajax请求 加入节流 3.

    92020

    详谈js防抖和节流

    引入 首先举一个例子: 模拟在输入框输入后做ajax查询请求,没有加入防抖和节流的效果,这里附上完整可执行代码: 效果:在输入框里输入一个,就会触发一次“ajax请求”(此处是console)。...1.2 应用场景 (1) 用户在输入框中连续输入一串字符后,只会在输入完后去执行最后一次的查询ajax请求,这样可以有效减少请求次数,节约请求资源; (2) window的resize、scroll事件...这就会导致每一次高频事件都会取消前一次的超时调用,导致事件处理程序不能被触发; 2.只有当高频事件停止,最后一次事件触发的超时调用才能在delay时间后执行; 效果: 加入防抖后,当持续在输入框里输入时...,会安装代码中的设定,每1秒执行一次ajax请求 加入节流.png 3.

    5.5K392

    jQuery 教程

    () 添加/触发 keypress 事件 keyup() 添加/触发 keyup 事件 live() 在版本 1.9 中被移除。...通过 jQuery AJAX 方法,您能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON – 同时您能够把这些外部数据直接载入网页的被选元素中。...的 HTTP GET 请求从服务器加载数据 $.getJSON() 使用 HTTP GET 请求从服务器加载 JSON 编码的数据 $.getScript() 使用 AJAX 的 HTTP GET 请求从服务器加载并执行...JavaScript $.param() 创建数组或对象的序列化表示形式(可用于 AJAX 请求的 URL 查询字符串) $.post() 使用 AJAX 的 HTTP POST 请求从服务器加载数据...() 规定第一个 AJAX 请求开始时运行的函数 ajaxStop() 规定所有的 AJAX 请求完成时运行的函数 ajaxSuccess() 规定 AJAX 请求成功完成时运行的函数 load() 从服务器加载数据

    17K20

    js的函数节流、函数防抖及其使用场景

    函数防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时 来看一下下面这个例子 //模拟一段ajax请求 function ajax(content) { console.log(...('keyup', function (e) { ajax(e.target.value) }) 上面的代码执行结果就是,我们只要按下键盘,就会触发这次ajax请求。...最终效果就是当你在频繁的输入时,并不会发送请求,只有当你在指定间隔内没有输入时,才会执行函数。如果停止输入但是在指定间隔内又输入,会重新触发计时。...上述代码达到的效果就是:我们在不断输入时,ajax会按照我们设定的时间,每1s执行一次,效果有点类似于我们玩魂斗罗这种游戏的时候,当点下开枪按钮时,子弹会匀速打出,停止按键后,会停止射击。...应用场景 函数防抖: 1. search搜索联想,用户在不断输入值时,用防抖来节约请求资源 2. window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次

    86420

    js实现函数防抖与节流

    js函数防抖与节流的区别: 函数防抖是某一段时间内只执行一次,而函数节流是间隔时间执行。...个人踩坑 1、通过理解函数防抖与函数节流的概念后,使用闭包实现函数防抖和节流,没有考虑到对于节流,如果用户在下一次请求之前已输入完毕,但是此时不会再进行请求,则会导致最后输入的文字获取其他事件改变不发请求...,即漏请求,所以需要加一个setTimeout兜底函数,且在每次准备请求的时候,设一个flag,即是否已经发送请求,如果走了正常周期发送请求,改为true,否则即为false,走setTimout,让setTimeout...比剩余事件略长一些,优先走节流定时器请求; 2、如果使用箭头函数,则不需要保存this。...} } } let throttleFn = throttle(ajax3,5000) elem3.addEventListener('keyup',function (e)

    1.4K10

    jQuery

    | keyup | keypress | mouseup | mousemove | mouseout | mouseover | 3.jQuery事件和事件源的绑定 派发事件: jq对象.事件名称(...的大弟弟b | a~b:选择a的所有b弟弟| 属性选择器: [属性名] 获取元素上带有该属性名的元素对象 [属性名='值'] 获取元素上带有该属性名且值为''的元素对象 属性选择器一般和标签选择器联合使用...function: 完成校验的逻辑,满足返回true,不满足返回false(默认) val: 输入框中的值 ele: 被校验的输入框对象(js对象) param: 校验器的值...八:Ajax&jQuery Ajax 1.原生ajax(javaScript): 1.创建ajax引擎(已被浏览器内置) 2.编写onreadystatechange函数 3.确定请求方式和路径...ajax: 1.$.post(url,[params],fn,[type]) |发送post异步请求 url:请求的路径 params:请求的参数 格式1:字符串 key1=value1&

    4.3K20

    【Ajax进阶】跨域和JSONP的学习

    什么是同源策略   跨域     什么是跨域     浏览器对跨域请求的拦截     如何实现跨域数据请求 JSONP   JSONP的实现原理   自己实现一个简单的JSONP   JSONP的缺点...MDN官方给定的概念:同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的重要安全机制。...浏览器对跨域请求的拦截     如何实现跨域数据请求 现如今,实现跨域数据请求,最主要的两种解决方案,分别是JSONP和CORS。 JSONP:出现的早,兼容性好。...(kw) }, 500) } // 为输入框绑定 keyup 事件 $('#ipt').on('keyup', function () {...防抖的应用场景 用户在输入框中连续输入一串字符时,可以通过防抖策略,只在输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源;   实现防抖   什么是节流 节流策略,顾名思义,可以减少一段时间内事件的触发频率

    1.2K30

    jQuery进阶前言

    5、focusin()和focusout()事件: focusin()是获取焦点事件。比如有一个输入框,要在该输入框输入文字,我们首先得用鼠标点一下该输入框,这就叫获取焦点。...三、键盘事件: 1、keydown()、keyup()和keypress(): keydown类似于mousedown,按下键盘时的事件;keyup就类似于mouseup,按下键盘再松开的那个时候触发的事件...比如一般的网站登录的时候要输验证码,当你输完验证码,就会立即提示验证码正确还是错误,而不需要点击“登录”按钮后再去判断,这就用到了Ajax。接下来就看看如何使用。...6、$.ajax(): 使用ajax()方法是最底层、功能最强大的请求服务器数据的方法,它不仅可以获取服务器返回的数据,还能向服务器发送请求并传递数值,也是最常用的。...它的调用格式如下: $.ajax([settings]) 其中参数settings为发送ajax请求时的配置对象,在该对象中,url表示服务器请求的路径,data为请求时传递的数据,dataType

    2.4K20

    7分钟理解JS的节流、防抖及使用场景前言概念和例子总结拓展

    可以看到,我们只要按下键盘,就会触发这次ajax请求。不仅从资源上来说是很浪费的行为,而且实际应用中,用户也是输出完整的字符后,才会请求。...可以看到,我们加入了防抖以后,当你在频繁的输入时,并不会发送请求,只有当你在指定间隔内没有输入时,才会执行函数。如果停止输入但是在指定间隔内又输入,会重新触发计时。 再看一个?...可以看到,我们在不断输入时,ajax会按照我们设定的时间,每1s执行一次。 结合刚刚biubiubiu的?...结合应用场景 debounce search搜索联想,用户在不断输入值时,用防抖来节约请求资源。...window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次 throttle 鼠标不断点击触发,mousedown(单位时间内只触发一次) 监听滚动事件,

    87830

    浅谈一下如何避免用户多次点击造成的多次请求

    一、有效地在web客户端采用一定机制去防止重复点击提交,将大大减轻服务器端压力 浅谈一下如何避免用户多次点击造成的多次请求 一、有效地在web客户端采用一定机制去防止重复点击提交,将大大减轻服务器端压力...1> 定义标志位:  点击触发请求后,标志位为false量;请求(或者包括请求后具体的业务流程处理)后,标志位为true量。通过标志位来判断用户点击是否具备应有的响应。...2> 卸载及重载绑定事件: 点击触发请求后,卸载点击事件;请求(或者包括请求后具体的业务流程处理)后,重新载入绑定事件。...二、请求频度 相信大家碰到过这样的业务,我们允许它重复点击(或者其他用户事件),但是不允许在一定的时间内超过次数XX次。这从用户友好体验及服务器承受压力选取了一个折中方案。...//如果键盘敲击速度太快,小于100毫秒的话就不会向后台发请求,但是最后总会进行一次请求的。

    1.6K40

    jsonp跨域实现的几种方式

    ok,了解了jsonp的原理和应用后,我们看看百度的智能提示是如何做的 在chrome的调试窗口下看看百度搜索发出的请求。...当输入关键字“a”,请求如图: 用firebug看下请求的参数,如图: 请求方式:get请求 请求参数:wd明显是要搜索的关键字;cb是请求回来的处理函数,名字可以随便给;t是时间戳,防止缓存的;...ajax请求并拿回数据是这样的: ok,测试可用,的确可以拿到关键字提示。...最关键的来了,现在开始写完整的智能提示并配合鼠标和键盘对候选词的操作(源码里的index.html页面),实现如下功能: 即时监控字母键和数字键,按下就发ajax请求(也可以设置延迟发请求,源码里有);...监控鼠标和键盘输入的js(autoComplete.js 源码里有更详细的注释): var timeoutId; //延迟请求服务器 var highlightindex = -1; //高亮标记

    3.4K20

    挥别web移动端开发差异和经典坑

    touch: 使用具有回弹效果的滚动, 当手指从触摸屏上移开,内容会继续保持一段时间的滚动效果。继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。...、keydown事件,在安卓手机浏览器中没有问题,但是在 ios 手机浏览器中用输入法输入之后,并未立刻相应 keyup、keydown 事件 非直接的文字输入(中文输入法)下,进行判断限制,仅在选词后触发...input事件 描述:在使用oninput监控输入框内容变化时,我们期望仅在value值变化时,才触发oninput事件,而在中文输入下,未选词时的按键也会触发oninput事件。...的URL跳转会出现空白 描述:安卓手机,在微信授权回调的函数中进行跳转至的URL不能带有#,但#号可放置在结尾。...经排查,原因如下: 原来是缓存导致的,因其#号后的参数等都被忽略,那么#以前的URL在授权前和授权后一致,其不再发送网页请求去重新获取而是直接读取缓存。

    2.9K20
    领券