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 相关文章推荐
asp.net 30分钟掌握无刷新 Repeater
Sep 16 Javascript
node.js 一个简单的页面输出实现代码
Mar 07 Javascript
基于JQuery 选择器使用说明介绍
Apr 18 Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 Javascript
JS中对数组元素进行增删改移的方法总结
Dec 15 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 24 Javascript
解决layui 三级联动下拉框更新时回显的问题
Sep 03 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
Jun 02 Javascript
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
JavaScript 中的执行上下文和执行栈实例讲解
Feb 25 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
PHP输出日历表代码实例
2015/03/27 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
js转义字符介绍
2013/11/05 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
python实现超级玛丽游戏
2020/03/18 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Python项目跨域问题解决方案
2020/06/22 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
精选干货:Java精选笔试题附答案
2014/01/18 面试题
财务人员个人自荐信范文
2013/09/26 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
新教师培训方案
2014/06/08 职场文书
金融专业求职信
2014/08/05 职场文书
生产操作工岗位职责
2014/09/16 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python