js实现Element中input组件的部分功能并封装成组件(实例代码)


Posted in Javascript onMarch 02, 2021

现在实现的有基础用法、可清空、密码框,参考链接:https://element.eleme.cn/#/zh-CN/component/input

js实现Element中input组件的部分功能并封装成组件(实例代码)

js实现Element中input组件的部分功能并封装成组件(实例代码)

js实现Element中input组件的部分功能并封装成组件(实例代码)

HTML代码:想要测试哪个组件,直接将对应组件解开注释即可,标红的js和css记得修改成你自己的位置。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>js实现可清空input组件</title>
    <script src="../js/input/jsInput.js"></script>
    <link rel="stylesheet" type="text/css" href="../css/jsInput.css"/>
  </head>
  <body>
    <script>
      //普通input输入框
       document.write(createElementInput())
      //添加可清空功能clearable
      //document.write(createElementInput("clearable"))
      //实现密码框show-password
      //document.write(createElementInput("show-password"))
    </script>
  </body>
</html>

JS代码:

function createElementInput(str){
  var temp = str;
  var html = "<div id='my_input_div' onmouseover='addClearNode(\""+str+"\")'' onmouseout='hiddenClearNode(\""+str+"\")''>";
  html += "<input id='my_input' placeholder='请输入内容'";
  if(str){
     if(str == 'show-password'){
       html+=" type = 'password' ";
     }
  } 
  html += "oninput='addClearNode(\""+str+"\")'";
  html += "onclick='changeColor(\""+str+"\")'";
  html += "onblur='hiddenClearNode(\""+str+"\")'/>";
  if(str){
   html += "<input id='"+str+"' onmousedown='changeValue(\""+str+"\")'/>";
  }  
  html += "</div>"
  return html;
}

//box-shadow: 0 0 0 20px pink; 通过添加阴影的方式显示边框
function changeColor(str){
  //alert(str)
  document.getElementById("my_input_div").style.boxShadow="0 0 0 2px #409eff";
  //获取inpu的值
  var value = document.getElementById('my_input').value;
  var button = document.getElementById(str);
  //添加判断 如果输入框中有值 则显示清空按钮
  if(value){
    if(button){
      button.style.visibility = "visible"
    }
  }
}
//应该输入内容之后使用该事件
function addClearNode(str){
  var value = document.getElementById('my_input').value;
  var button = document.getElementById(str);
  //alert(value)
  if(value){
    if(button){
      //将button设置为可见
      button.style.visibility = 'visible'
    }
  }else{
    //判断该属性是否存在
    if(button){
      //将button设置为不可见
      button.style.visibility = 'hidden'
    }
  }
  //选中后div添加选中样式 高亮显示
  document.getElementById("my_input_div").style.outline="0 0 0 2px #409eff";
}
//改变input中的值
function changeValue(str){
  if(str){
    if(str == 'clearable'){
      clearValues(str);
    }else if(str == 'show-password'){
      showPassword();
    }
  }
  
}
//清空输入值
function clearValues(str){
  document.getElementById("my_input").value = "";
  document.getElementById(str).style.visibility = "hidden";
  //仍然处于选中状态 div边框突出阴影
  document.getElementById("my_input_div").style.boxShadow="0 0 0 2px #409eff"
}

//隐藏清除按钮
function hiddenClearNode(str){
  var button = document.getElementById(str);
  if(button){
    button.style.visibility="hidden";
  }
  //将div阴影设置为0
  document.getElementById("my_input_div").style.boxShadow="0 0 0"
}

//显示密码
function showPassword(){
  var myInput = document.getElementById('my_input');
  var password = myInput.value;
  var type = myInput.type;
  //alert(type)
  if(type){
    if(type == 'password'){
      myInput.type = '';
      myInput.value = password;
    }else{
      myInput.type = 'password';
      myInput.value = password;
    }
  }
  //仍然处于选中状态 div边框突出阴影
  document.getElementById("my_input_div").style.boxShadow="0 0 0 2px #409eff"
}

CSS代码:

#my_input_div{
  width: 150px;
  border: 1px solid silver;
  border-radius: 4px;
  position: relative;
}
#my_input{
  height: 30px;
  width:100px;
  margin-left: 6px;
  border: none;
  outline: none;
  cursor: pointer;
}
#clearable{
  height: 20px;
  width: 15px;
  text-align: center;
  visibility:hidden;
  border: none;
  outline: none;
  color: #409eff;
  cursor: pointer;
  background-image: url(../image/clear.svg);
  background-repeat: no-repeat;
  background-size: 12px;
  position: absolute;
  top: 10px;
  left: 120px;
  display: inline-block;
}
#show-password{
  height: 20px;
  width: 15px;
  text-align: center;
  visibility:hidden;
  border: none;
  outline: none;
  color: #409eff;
  cursor: pointer;
  background-image: url(../image/eye.svg);
  background-repeat: no-repeat;
  background-size: 12px;
  position: absolute;
  top: 10px;
  left: 120px;
  display: inline-block;
}

剩下的功能会慢慢被完善......

到此这篇关于纯生js实现Element中input组件的部分功能(慢慢完善)并封装成组件的文章就介绍到这了,更多相关js实现input组件功能内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript 计算当天是本年本月的第几周
Mar 22 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
Nov 22 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
js淡入淡出焦点图幻灯片效果代码分享
Sep 08 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
Dec 04 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
详解基于webpack搭建react运行环境
Jun 01 Javascript
浅谈Angular路由复用策略
Oct 04 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 Javascript
Node批量爬取头条视频并保存方法
Sep 20 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 #jQuery
关于better-scroll插件的无法滑动bug(2021通过插件解决)
Mar 01 #Javascript
一起来了解一下JavaScript的预编译(小结)
Mar 01 #Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 #Vue.js
three.js 实现露珠滴落动画效果的示例代码
Mar 01 #Javascript
详解js创建对象的几种方式和对象方法
Mar 01 #Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 #Vue.js
You might like
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
php中大括号作用介绍
2012/03/22 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
package.json文件配置详解
2017/06/15 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
浅析python内置模块collections
2019/11/15 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
和睦家庭事迹
2014/05/14 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
银行自荐信范文
2015/03/25 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript