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

简介: 这篇文章主要介绍了纯生js实现Element中input组件的部分功能(慢慢完善)并封装成组件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

这篇文章主要介绍了纯生js实现Element中input组件的部分功能(慢慢完善)并封装成组件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


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

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<!DOCTYPE html>

<html>

  <head>

    <metacharset="utf-8">

    <title>js实现可清空input组件</title>

    <scriptsrc="../js/input/jsInput.js"></script>

    <linkrel="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代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

functioncreateElementInput(str){

  vartemp = str;

  varhtml = "<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>"

  returnhtml;

}

 

//box-shadow: 0 0 0 20px pink; 通过添加阴影的方式显示边框

functionchangeColor(str){

  //alert(str)

  document.getElementById("my_input_div").style.boxShadow="0 0 0 2px #409eff";

  //获取inpu的值

  varvalue = document.getElementById('my_input').value;

  varbutton = document.getElementById(str);

  //添加判断 如果输入框中有值 则显示清空按钮

  if(value){

    if(button){

      button.style.visibility = "visible"

    }

  }

}

//应该输入内容之后使用该事件

functionaddClearNode(str){

  varvalue = document.getElementById('my_input').value;

  varbutton = 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中的值

functionchangeValue(str){

  if(str){

    if(str == 'clearable'){

      clearValues(str);

    }elseif(str == 'show-password'){

      showPassword();

    }

  }

  

}

//清空输入值

functionclearValues(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"

}

 

//隐藏清除按钮

functionhiddenClearNode(str){

  varbutton = document.getElementById(str);

  if(button){

    button.style.visibility="hidden";

  }

  //将div阴影设置为0

  document.getElementById("my_input_div").style.boxShadow="0 0 0"

}

 

//显示密码

functionshowPassword(){

  varmyInput = document.getElementById('my_input');

  varpassword = myInput.value;

  vartype = 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代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

#my_input_div{

  width150px;

  border1pxsolidsilver;

  border-radius: 4px;

  positionrelative;

}

#my_input{

  height30px;

  width:100px;

  margin-left6px;

  bordernone;

  outlinenone;

  cursorpointer;

}

#clearable{

  height20px;

  width15px;

  text-aligncenter;

  visibility:hidden;

  bordernone;

  outlinenone;

  color#409eff;

  cursorpointer;

  background-imageurl(../image/clear.svg);

  background-repeatno-repeat;

  background-size12px;

  positionabsolute;

  top10px;

  left120px;

  display: inline-block;

}

#show-password{

  height20px;

  width15px;

  text-aligncenter;

  visibility:hidden;

  bordernone;

  outlinenone;

  color#409eff;

  cursorpointer;

  background-imageurl(../image/eye.svg);

  background-repeatno-repeat;

  background-size12px;

  positionabsolute;

  top10px;

  left120px;

  display: inline-block;

}

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

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

原文链接:https://www.mimisucai.com/teach/javascript/36044.html

相关文章
|
7天前
|
前端开发 数据安全/隐私保护
crypto-js中AES的加解密封装
文章介绍了如何在前端使用crypto-js库进行AES加密和解密,提供了加解密的函数封装示例,并演示了如何加密和解密字符串或对象。
35 1
crypto-js中AES的加解密封装
|
8天前
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
45 1
用python执行js代码:PyExecJS库
|
4天前
|
编解码 前端开发 JavaScript
javascript检测网页缩放演示代码
javascript检测网页缩放演示代码
|
6天前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
7天前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
34 0
|
4天前
|
存储 JavaScript 前端开发
改进JavaScript代码,给水果有序赋色
改进JavaScript代码,给水果有序赋色
|
6天前
|
存储 JSON JavaScript
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇在JavaScript中编写一个用于快递自动分拣的代码,区分省份、市区、县、城乡镇,通常意味着你需要一个数据结构来存储这些地理区域的信息,并编写逻辑来根据快递地址中的信息将其分配到正确的分类中。 这里,我将提供一个简化的示例,说明如何使用JavaScript对象和函数来实现这一功能。请注意,这个示例是高度简化的,并且假设你已经有了某种方式(如正则表达式或API调用)来从快递地址中提取省份、市区、县等信息。 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者goS
|
7天前
|
JavaScript 前端开发 Python
python执行js代码
本文档详细介绍如何安装Node.js环境及PyExecJS库,并提供示例代码展示其功能。首先,通过指定链接安装Node.js,安装完毕后可在命令行中输入`node --version`来验证安装是否成功。接着,使用`pip install PyExecJS`安装PyExecJS库,该库允许Python程序执行JavaScript代码。文档还提供了多个示例代码,展示了如何在Python环境中执行和编译JavaScript代码,并可以选择特定的JavaScript运行时环境,如Node.js或JScript。最后,通过具体案例展示了PyExecJS的功能与使用方法。
14 3
|
4天前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
下一篇
无影云桌面