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 相关文章推荐
Array.prototype 的泛型应用分析
Apr 30 Javascript
Eval and new funciton not the same thing
Dec 27 Javascript
纯js简单日历实现代码
Oct 05 Javascript
js去空格技巧分别去字符串前后、左右空格
Oct 21 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
jquery实现手风琴效果
Nov 20 Javascript
浅析2种JavaScript继承方式
Dec 04 Javascript
Bootstrap框架安装使用详解
Jan 21 Javascript
webstorm添加*.vue文件支持
May 08 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
Jun 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大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
2013的个人自我评价
2013/12/26 职场文书
音乐教学随笔感言
2014/02/19 职场文书
小学运动会口号
2014/06/07 职场文书
兽医医药专业求职信
2014/07/27 职场文书
2014年环卫工作总结
2014/11/22 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers
django中websocket的具体使用
2022/01/22 Python