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 相关文章推荐
指定js可访问其它域名的cookie的方法
Sep 18 Javascript
JS中confirm,alert,prompt函数使用区别分析
Apr 01 Javascript
jquery 跨域访问问题解决方法(笔记)
Jun 08 Javascript
JQuery删除DOM节点的方法
Jun 11 Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 Javascript
AngularJS 的$timeout服务示例代码
Sep 21 Javascript
mui back 返回刷新页面的实例
Dec 06 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
Jan 07 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 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
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
JS 控制CSS样式表
2009/08/20 Javascript
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
函授毕业自我鉴定
2013/12/19 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python