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 相关文章推荐
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
Nov 17 Javascript
javascript中的3种继承实现方法
Jan 27 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
Jquery和Js获得元素标签名称的方法总结
Oct 08 Javascript
js控制文本框禁止输入特殊字符详解
Apr 07 Javascript
Bootstrap按钮组实例详解
Jul 03 Javascript
详解使用 Node.js 开发简单的脚手架工具
Jun 08 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
Feb 13 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
Jul 19 Javascript
JS实现点击掉落特效
Jan 29 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支持页面回退的两种方法[转]
2007/02/14 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php利用事务处理转账问题
2015/04/22 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
js正确获取元素样式详解
2009/08/07 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
python文件比较示例分享
2014/01/10 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
mac使用python识别图形验证码功能
2020/01/10 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Python批量启动多线程代码实例
2020/02/18 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
大专自我鉴定范文
2013/10/23 职场文书
公证书标准格式
2014/04/10 职场文书
教研活动总结
2014/04/28 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python