JS仿淘宝搜索框用户输入事件的实现


Posted in Javascript onJune 19, 2017

淘宝是我们经常用的一个网上购物平台,打开淘宝网首页,找到淘宝首页的搜索框,如下如所示:

JS仿淘宝搜索框用户输入事件的实现

大家可以看到,当页面一打开,搜索框中就可以看到灰色字体“少女高跟鞋”,还有闪烁的光标。当用户点击输入的时候,灰色字消失。当用户清空文本框的所有内容的时候,灰色字自动恢复。

接下来,这个小案例就是要介绍如何实现这种效果,即用户输入事件。

判断用户输入的事件有 oninput 和onpropertychange 。当然,想必你能想到,由于浏览器兼容的问题,他们出现的场合有所不同。 正常浏览器支持oninput ,而 IE6、IE7、IE8 支持的 onpropertychange 。

为了节省时间,不再模仿淘宝CSS样式。

代码及解析 :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>判断用户输入事件第2遍oninput 和onpropertychange 的用法</title>
</head>
 <style>
    .search {
      width:300px;
      height: 30px;
      margin: 100px auto;
      position: relative;
    }
    .search input {
      width:200px;
      height:25px;
    }
    .search label {
      font-size: 12px;
      color:#ccc;
      position: absolute;
      top:8px;
      left:10px;
      cursor: text;
    }
  </style>
  <script type="text/javascript">
  业务逻辑分析:
//      1.内容为空时,光标和默认字显示在搜索框。自动获取焦点
//      2.当输入内容时,默认字消失。用oninput事件
    window.onload = function () {
      function $(id){ return document.getElementById(id);}
      $("txt").focus();//自动获取光标方法
      $("txt").oninput = $("txt").onpropertychange = function () {
      //oninput 大部分浏览器支持 检测用户表单输入内容
      //onpropertychange ie678 检测用户表单输入内容
        if ( this.value == ""){
          // 首先判断文本框里的值是否为空。注意用双等号!
          $("message").style.display = "block";
        } else {
          $("message").style.display = "none";
        }
      }
    }
  </script> 
<body>
<div class="search">
  <input type="text" id="txt">
  <label for="txt" id="message">仿淘宝搜索框</label>
  <!-- 注意label 中for属性 值指向 input 的id值 ,意思是把label标签和input表单相关联。
  label 元素不会向用户呈现任何特殊效果。当用户在label元素内点击文本, 浏览器就会自动将焦点转到和标签相关联的表单控件上。 -->
</div>
</body>
</html>

效果:

JS仿淘宝搜索框用户输入事件的实现

以上所述是小编给大家介绍的JS仿淘宝搜索框用户输入事件的实现,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
别了 JavaScript中的isXX系列
Aug 01 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
理解jQuery stop()方法
Nov 21 Javascript
angularJS 中$scope方法使用指南
Feb 09 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
Dec 03 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
JavaScript严格模式详解
Jan 16 Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 Javascript
详解node.js中的npm和webpack配置方法
Jan 21 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 Javascript
jQuery实现下拉菜单的实例代码
Jun 19 #jQuery
微信小程序实现皮肤功能(夜间模式)
Jun 18 #Javascript
关于javascript作用域的常见面试题分享
Jun 18 #Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 #Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 #Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 #Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 #Javascript
You might like
写出高质量的PHP程序
2012/02/04 PHP
php实现文件下载代码分享
2014/08/19 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
python3.5绘制随机漫步图
2018/08/27 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
代理商会议邀请函
2014/01/27 职场文书
机关搬迁方案
2014/05/18 职场文书
应聘护士求职信
2014/07/21 职场文书
1000字打架检讨书
2014/11/03 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
平遥古城导游词
2015/02/03 职场文书
写给老婆的保证书
2015/02/27 职场文书
催款函范本大全
2015/06/24 职场文书
诚信高考倡议书
2019/06/24 职场文书
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang