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 相关文章推荐
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
Dec 10 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 Javascript
JS封装的选项卡TAB切换效果示例
Sep 20 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
使用socket.io实现简单聊天室案例
Jan 02 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
Vue.js实现的购物车功能详解
Jan 27 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
Nov 05 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
php新浪微博登录接口用法实例
2014/12/23 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
TensorFlow损失函数专题详解
2018/04/26 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
Servlet的生命周期
2013/08/25 面试题
人力资源主管职责范本
2014/03/05 职场文书
建筑工地大门标语
2014/06/18 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
大学生自荐信范文
2015/03/05 职场文书
赞助商致辞
2015/07/30 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
总结高并发下Nginx性能如何优化
2021/11/01 Servers
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android