输入及状态改变事件、搜索框

oninput出自于HTML5的规范里面,IE9某些版本及IE9以下使用的是onpropertychange
在写鼠标输入事件的时候考虑到兼容性要两个都写

onchange失去焦点才会触发
由于placeholder不好修改,不容易自定义,所以一般用focus和blur来实现placeholder
onfocus onblur

  <input type="text"
         class="inp"
         οnfοcus="if(this.value === '请输入关键字'){
        this.value = '';
        this.className = '';
      }"
       οnblur="if(this.value === ''){
        this.value = '请输入关键字';
        this.className = 'inp';
      }"

模拟京东搜索框

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
      .wrap {
          position: relative;
          width: 400px;
          height: 200px;
          margin: 50px auto;
          border: 1px solid #000;
      }

      .ph-box {
          position: absolute;
          left: 50px;
          top: 50px;
          width: 300px;
          height: 38px;
          line-height: 38px;
          color: #989898;
      }
      .ph-box.show{
          display: block;
      }
      .ph-box.hide{
          display: none;
      }
      input {
          position: absolute;
          left: 50px;
          top: 50px;
          width: 300px;
          height: 38px;
          outline: none;
          border: 1px solid #baf;
          background-color: transparent;
          box-sizing: border-box;

      }
  </style>
</head>
<body>
  <div class="wrap">
    <div class="ph-box">111</div>
    <input type="text"
           id="J-search_kw"
           class="search-input"
    />
    <div style="display: none" class="show-content">
      ["湿纸巾","存储卡","洗衣机","手机","电脑"]
    </div>
  </div>
  
  <script type="text/javascript">
    <!--    模拟京东搜索框 -->
    window.onload = function(){
      init();
    }
 function init(){
   searchKeyword();
 }
 var searchKeyword = (function(){
   var content = document.getElementsByClassName('search-input')[0],
       autoKey = document.getElementsByClassName('ph-box')[0],
       keywords =JSON.parse(document.getElementsByClassName('show-content')[0].innerText),
       t = null,
       keyOrder = 0;
   function setKeyword(){
      autoKey.innerHTML = keywords[keyOrder];
      t = setInterval(autoKws, 1000)
   }
   addEvent(content, 'input', function(e){
     showAutoKws(this.value);
   })
   addEvent(content, 'propertyChange', function(e){
     showAutoKws(this.value);
   })
   addEvent(content, 'blur', function(e){
     showAutoKws(this.value, true);
   })
   addEvent(content, 'focus', function(e){
     clearInterval(t);
   })
   function autoKws(){
     var len = keywords.length;
     autoKey.innerHTML = keywords[keyOrder];
     keyOrder = keyOrder < len - 1 ? keyOrder + 1 : 0;
    
   }
   function showAutoKws(val, isBlur){
     if(val.length <= 0){
       autoKey.className = 'ph-box show';
       if(isBlur) {
         t = setInterval(autoKws, 1000);
       }
     } else {
       autoKey.className = 'ph-box hide';
     }
   }
  return function(){
    setKeyword();
  }
 })();
    function addEvent(ele, type, fn){
      if(ele.addEventListener){
        ele.addEventListener(type, fn, false);
      } else if(ele.attachEvent){
        ele.attachEvent('on' + type, fn);
      } else {
        ele['on' + type] = fn;
      }
    }
  
  </script>

</body>
</html>
  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
API之网络函数1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 2. API之消息函数 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条消息投递给应用程序 RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 3. API之文件处理函数 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件 DeviceIoControl 对设备执行指定的操作 DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 FindFirstFile 根据文件名查找文件 FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 GetBinaryType 判断文件是否可以执行 GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 GetCurrentDirectory 在一个缓冲区中装载当前目录 GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 GetDriveType 判断一个磁盘驱动器的类型 GetExpandedName 取得一个压缩文件的全名 GetFileAttributes 判断指定文件的属性 GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制 GetFileSize 判断文件长度 GetFileTime 取得指定文件的时间信息 GetFileType 在给出文件句柄的前提下,判断文件类型 GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
# python选修课期末作业 ---- 图书推荐系统 后端使用python框架Django,调度任务的程序运行基于python高级调度框架APScheduler,使用Scrapy框架进行数据的爬取,彩蛋游戏使用unity2D进行开发 项目描述: 需求分析: 1.学校图书馆借的书都很容易忘记还,这个时候需要有个软件提醒什么时候还书,或者自动帮我进行书籍的续借(免受罚款的灾难:-D) 2.比较难知道学校的新书有什么,需要有一个推送新书的程序告诉我,比如说我关注的一个关键词有python,就会在新书出现python关键字的时候给我推送特别关注的新书 3.馆藏空闲通知,有时候,我想要借的书给别人借走了,然后就会特别angry,:-|,这个时候,就特别想要一个程序,可以及时通知我那本书什么时候还回来了 4.同类型图书推荐,学校图书馆借阅系统并没有这个功能,有时候我看到一本好书,然后就会想要找跟他类型相同(内容相似)的书,这个时候就需要同类型图书推荐系统,比如图书馆关于shader方面的书很少,这个时候我看到一本关于shader的书,就会特别想知道跟这本书相似的有什么书之类的~~~ 5.高级搜索功能,学校图书馆借阅系统只能通过出版年份/作者进行排序,这样只能通过一本书的名字来判断好坏,所以,急需增加一本知道图书好坏的功能,所以增加了通过豆瓣评分排序,豆瓣评分人数排序,豆瓣评论人数排序等排序功能 6.书籍详情页面显示的内容太少了,学校图书馆的系统,最多显示内容简介跟书名,其他信息都要到其他平台进行搜索,这太麻烦了,所以,想到了,在书籍详情页面增加很多内容,大致有,目录,内容简介,作者,还有评论,关于评论这一部分,想到了通过两种方式来显示,一种是普通的显示,也就是一条一条评论的显示,一种是直接全部文字的词云显示,可以让读者第一时间知道其他人对这本书的第一印象 7.同时需要注意的是,所有关于通知的内容(续借,馆藏空闲通知,新书速递)都通过APScheduler调度来完成,也就是,一天运行一次,或者一个月运行一次,避免给服务器造成太大压力。 细化功能(按照页面---需要的功能对功能进行细化): 搜索页面: 1.评分五角星的绘制 √ 2.登录功能 √ 3.登录后的搜索界面改变,同时可以设置自动续借等功能 √ 4.每本书的样式显示(包含评分,书名,作者等) √ 5.侧边栏的显示: √ a.给出常用标签(该名用户经常进行搜索的关键词) b.给出缩小范围的年份示例(这个用于缩小范围的年份通过后端获得该页数据的全部年份获得) c.给出用于缩小范围的分类示例(这个分类示例通过该页的索书号获得,这个索书号只拿/之前的,比如TP312.561/T,就只显示TP312.561) d.给出本次查询点击率最高的书籍 6.分页功能 √ 7.关键字搜索排序功能,通过对给定的字段搜索,给出按照指定排序规则排好序的书籍列表 √ 8.对自动续借功能的设置,设置完后,界面上打勾,后端使用调度框架 APscheuled每隔一天看一次续借日期是否到期 √ 9.对新书速递功能的设置,设置完后,界面上打勾,后端是使用调度框架APSchedule每隔一个月重新爬取一次图书馆,爬取到的新书通过邮箱推送给用户(如果用户设置了特别关注名单,那么推送时推文会不一样)√ 10.自动补全搜索,当键入某一个字母时,(使用ajax)通过判断获得跟输入的最相似的10个字符串,然后在下方显示出来。 登录页面: √ 1.Gif验证码 2.第一次登录时填写邮箱,并通过邮箱发送邮箱验证码 √ 3.使用cookie保存登录状态 书籍详情页面: 1.显示书籍详情信息(封面,书名,评分,内容,目录) √ 2.显示书籍评论,评论分为文字版和词云版: a -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
Everything:速度最快的文件搜索工具 转载善用佳软,本人用的时候都是用alt+F快捷键的,这个需要到选项设置一下,检索速度太快,占用内存平时7MB左右,不能检索文件内容,仅文件名。可以开启http或ftp服务,用来共享文件还是不错的,毕竟校网传输速度不错,方便 Everything是速度最快的文件搜索软件。其速度之快令人震惊,百G硬盘几十万个文件,可以在几秒钟之内完成索引;文件名搜索瞬间呈现结果。它小巧免费,支持中文,支持正则表达式,可以通过HTTP或FTP分享搜索结果。如果不满意Windows自带的搜索工具、Total Commander的搜索、Google 桌面搜索或百度硬盘搜索,如果正在使用或放弃了Locate32,都值得推荐这款体积小巧、免安装、免费、速度极快(比Locate32更快)的文件搜索工具Everything! 最新beta版。 中文语言包、语言包txt文本 本文目录:简介、初级教程、视频演示、技巧、补充、总结、附录 1. Everything简介 voidtools(中文主页)开发的一款文件搜索工具,官网描述为“基于名称实时定位文件和目录(Locate files and folders by name instantly)”。它体积小巧,界面简洁易用,快速建立索引,快速搜索,同时占用极低的系统资源,实时跟踪文件变化,并且还可以通过http或ftp形式分享搜索。 注意: - 只搜索文件名,不能搜索文件内容; - 只适用NTFS文件系统,不适合FAT32; - 完美支持中文,但必须使用V1.2.及更新版本。 2. 初级教程:Everything的基本用法 2.1 下载与安装 官方下载页。 安装或解压Everything,即可开始使用。 2.2 首次运行 Everything在第一次运行时,会建立索引数据库。但你丝毫不用担心,其速度极快,生成的索引文件极小!看看本文下面的回复,你会充满信心。亲身体验之后,你或者也会为其速度震惊。或者,你根本没感觉到它需要建立索引。 索引之后,简洁的程序界面呈现在你的面前,程序状态栏中还会显示索引的文件数量。看到这个数字,你是否惊奇Everything的神速呢? 2.3 基本搜索 尽管Everything还处在英文界面,但这并不影响你的基本使用。只须在搜索框中,输入几个字母或汉字,搜索结果就会实时呈现在你的眼前。然后,可以直接双击某条结果,打开文件。也可以直接在结果中进行复制、删除等常见操作。 2.4 切换为中文界面 中文语言包,并将语言包内的Everything.lng解压到程序目录,就可以通过菜单切换为中文了:Tools→ Options→ General→ Language→ 简体中文。 需要说明的是,切换语言后,需要重启Everything才能看到效果。另外,点击Everything窗口的关闭按钮后,它只是缩小为托盘图标,并没有真正关闭。 3. Everything搜索技巧 3.1 高效搜索之“与”“或” 技巧:在Everything的搜索框中可以输入多个关键词,以空格分开,表示搜索结果要包括全部关键词。大家肯定对这种做法不会陌生,因为它正是搜索引擎的惯例。 举例:键入(不包括引号,下同)“李白 北京 08 jpg”,可以快速找出某些照片。 技巧:对应“与”的还有“或”(OR)运算,用半角竖线表示:|。当你不确信关键词的准确描述时,这种方式非常有用。 举例:“jpg 李白|libai 北京 08”、“免费|freeware”…… 引伸:既然空格表示“与”,那么如何表示真正的空格呢?很简单,加英文半角引号,比如”program files”。 3.2 正则表达式 Everything支持正则表达式,或者说,支持一些简单的正则表达式。但对大多数用户而言,这已经足够了!Everything支持的正则表达式有: | () ? * + . [] [^] ^ $ {m,n} rex网友的翻译。如果你不了解什么是正则表达式,请自行搜索。 3.3 指定搜索范围 默认情况下,Everything索引、搜索所有本地NTFS磁盘的所有目录。但是你可以通过如下方式,限定搜索范围,以得到更易用的结果列表。 - 希望Everything永不索引某个磁盘,请在“选项”-“NTFS磁盘”中,选定相应盘符,取消“搜索本卷”或“包含在数据库中”。(注:可以取消前一项,这样后一项就自动变灰——但没发现这种做法与只取消后一项的差别。大家可以研究一下!) - 希望永远排除某些目录,可以在“选项”-“排除列表”中设定。和上条方法一样,确认之后Everything会重新生成索引。 - 希望Everything只搜索某个目录,可以在资源管理器或Total Commander中,右击该目录,在弹出菜单上选“Search Everything…”。这时你会看到Everything的搜索框中,出现了带引号的目录名。 - 与上一方法相同,只是不用右击目录,而是直接输入带引号的目录名,再输入搜索关键词。需要注意的是:目录名一定是完整路径,且用半角双引号括起来,不能选中“使用正则表达式”。 - 还有一种方法,使用起来要头脑更清楚才行。比如,设定“匹配路径”后,输入 files/ .exe,看看搜到了什么结果,想想这是为什么。 3.4 网络分享 Everything内置了HTTP、ETP/FTP服务器。这意味着,你可以用它当作简单的服务器来用。何况,它的HTTP分享,仍然提供了强大的搜索功能。 HTTP分享:点击菜单“工具”-“HTTP服务器”后,就可以在浏览器访问 http://localhost 或输入本机IP进行访问了。在HTTP中,它的搜索功能一样强大。因此,你可以把它加入Firefox等浏览器的自定义搜索中,更加方便的进行搜索。 FTP功能类似,但不具备搜索功能。 相比而言,因为浏览器更为常用,并且支持搜索,默认的UTF-8编码识别率更高,所以推荐HTTP方式分享。无论是HTTP还是FTP,其端口、用户名、密码都是可以设定的。这样,你就可以在局域网内更放心的分享文件了。 除了与朋友分享之外,在文件服务器上运行Everything,然后用户就可以通过浏览器快速搜索了。这是一个很好的应用。 4. 一些补充 4.1 everything的速度 Everything搜索工具的最大优点是速度。其速度不是快,是极快;用户不是满意,而是震惊。 第一个快速体现在索引速度。官网称,1分钟可索引100万个文件。笔者的NTFS文件系统共40G/近4万个文件,第一次启动时,根本没有感觉到建立索引需要时间。这种快速,是因为Everything的索引无需逐一扫描硬盘文件,而是直接读取NTFS文件系统的USN日志。这当然是既省力,又合理的做法。 第二个快速体现在搜索速度。在搜索框中键入字符后,搜索结果——或许称为过滤结果更准确——实时呈现。 Locate32。是否真有这么快?请各位读者反馈试用结果。目前收到的反馈都证明了这一点,对有些网友而言,速度已经快到令人震惊,甚至是愤怒了:凭什么可以这么快! 4.2 Everything资源占用 总起来讲,占用资源很少。 - 从安装(实际解压即可)来看,真正需要的只有一个主文件exe,约0.5MB。 - 索引数据库极小。笔者60G硬盘,索引文件0.7MB。 - 占用内存少,笔者使用为7MB。 4.3 Everything数据库更新 - 没有所谓更新频率的设定,因为更新是自动的。 - 每次重启Everything,都会自动更新; - 每次设置Everything(比如设定排除列表)之后,都会自动更新; - Everything运行时,会实时更新索引数据库。 4.4 Everything可与其他文件管理器(如Total Commander)集成 以下内容由网友dracodoc于2008-11-18 1:17补充。Everything集成Total Commander Everything FAQ有介绍。 我的修改: explore_folder_command=$exec(”%SystemRoot%\explorer.exe” /n,/e,”%1″) explore_folder_path_command=$exec(”%SystemRoot%\explorer.exe” /n,/e,/select,”%1″) open_folder_path_command=$exec(”d:\app\wincmd\TOTALCMD.EXE” “$parent(%1)”) open_file_command=$exec(”%1″) open_folder_command=$exec(”d:\app\wincmd\TOTALCMD.EXE” “%1″) explore部分不用变,保留第二种选择。需要在tc里设定只打开一个tc实例,我试过用tc命令行的/o参数来不打开第二个实例,但是everything不认。 现在双击找到的文件会打开,双击目录会激活tc跳到该目录(如果你想设定在左边,右边或者新建一个tab可以尝试加上tc的命令行参数,不一定能用),右键选择文件,open path会用tc打开文件所在目录。 再在tc里或者其他全局hotkey设定程序里设定everything的激活热键就可以了(我不喜欢一直开着,随用随启动并不慢) 下载最新beta版。低版本Everything无法识别上述ini内容,会强行删除。“在tc里设定只打开一个tc实例”的做法有2种。一是图形化操作(推荐):配置 → 操作方式 → 主程序 → 只允许一个TC运行。二是直接在wincmd.ini中的[Configuration]段增加一句 onlyonce=1,并重启TC。 5. 结论 如果你经常需要按照文件名进行快速搜索,并且磁盘用了NTFS文件系统,则Everything是首荐工具。如果你需要远程搜索其他计算机上的文件,那么Everything的服务器共享功能更为适合。总之,这款不到1MB的搜索利器,很值得收藏试用。 附录 用Everything在電光石火間找到迷失的檔案。于是,我也在翻译完成之前先发此文,以便合力宣传everything。 友好竞争的关系,都是小巧、免费的佳作。bbinn还有一款文件查重小软件FindDump,也在上面的贴子中。 网友评论:(评论内容只代表网友观点,与本站立场无关!) 【发表评论】 评论人 评论内容 评论时间 打分 【bavon】 绝对的好东西。 只要大概知道你的文件名包含哪几个字,就可以把文件找出来,而且速度极快 2009-9-1 11:02:29 5分 【comme】 不清楚,我只是自己用着好就发上来了 2008-11-27 17:53:12 3分 【xjdonkey】 用ava find很久了,感觉不错。 这类工具就是搜索文件名的,跟desktop那种全文索引工具没有可比性。 ava find要在线监视文件读写,感觉对硬盘速度有影响,但它建立的索引库大概也就是50M/50G,检索速度非常快了。现在这类工具挺多,确实很有意义,估计微软用不了多久应该就会集成进windows了。 有没有用过的说说它和ava find比有什么优点? 2008-11-27 12:33:01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值