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 相关文章推荐
node+express+ejs制作简单页面上手指南
Nov 26 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
jQuery中extend函数详解
Jul 13 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
Bootstrap中CSS的使用方法
Feb 17 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
jquery 实现拖动文件上传加载进度条功能
Mar 18 jQuery
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
es6函数之箭头函数用法实例详解
Apr 25 Javascript
如何在JavaScript中正确处理变量
Dec 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
php实现搜索类封装示例
2016/03/31 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
Python中用max()方法求最大值的介绍
2015/05/15 Python
详解Python中where()函数的用法
2018/03/27 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Django Celery异步任务队列的实现
2019/07/24 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Django 批量插入数据的实现方法
2020/01/12 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
python 实现多维数组(array)排序
2020/02/28 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
控制工程专业个人求职信
2013/09/25 职场文书
销售简历自我评价
2014/01/24 职场文书
大学同学会活动方案
2014/08/20 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
民主评议党员工作总结
2014/10/20 职场文书
毕业典礼主持词
2015/06/29 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
5道关于python基础 while循环练习题
2021/11/27 Python