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

相关文章
|
2天前
|
JavaScript
网站内容禁止复制的js代码
网站内容禁止复制的js代码
|
9天前
|
设计模式 JavaScript
JS发布订阅模式封装(纯手工)
发布订阅模式是JS常用的设计模式,在面试中也会经常遇到,以下是我的手写实现方式,经测试效果不错,小伙伴们们可以直接拷贝使用。
|
8天前
|
缓存 JavaScript 前端开发
js和html代码一定要分离吗
JavaScript(JS)和HTML代码的分离虽非绝对必要,但通常被推荐
|
11天前
|
移动开发 JavaScript 安全
总有一款适合您分享78个JS相册代码
本文分享了78款JS相册代码,包括3D相册旋转木马、图片悬浮效果、倾斜图片幻灯片切换等特效,适用于各种图片展示场景。无论您需要哪种样式,都能在这里找到满意的解决方案。快来挑选吧!参考链接:[点击这里](https://www.vipwb.com/sitemap.xml)。
23 4
|
12天前
|
JavaScript
分享一款520表白节JS代码
今天给大家分享一款JS表白源码 js会随 随机颜色心形跟随鼠标互动520表白节女神表白利器! 修改的话就搜索:LOVEh 就能找到这个英文了。
7 0
分享一款520表白节JS代码
|
19天前
|
JSON JavaScript 前端开发
如何使用代码注释:关于JavaScript与TypeScript
TSDoc是一种标准化TypeScript代码文档注释的规范,使不同工具能无干扰地提取内容。它包括多种标记,如@alpha、@beta等发布阶段标记;@decorator、@deprecated等功能标记;@defaultValue、@eventProperty等描述标记;@example、@experimental等示例与实验性标记;@inheritDoc、@internal等引用与内部标记;@label、@link等链接标记;@override、@sealed等修饰符标记;以及@packageDocumentation、@param、
25 5
|
17天前
|
Web App开发 JavaScript 前端开发
JavaScript基础知识-使用Firefox进行代码的调试(Debug)
关于如何使用Firefox浏览器进行JavaScript代码调试的基础知识介绍。
29 0
|
20天前
|
开发者 图形学 C#
深度解密:Unity游戏开发中的动画艺术——Mecanim状态机如何让游戏角色栩栩如生:从基础设置到高级状态切换的全面指南,助你打造流畅自然的游戏动画体验
【8月更文挑战第31天】Unity动画系统是游戏开发的关键部分,尤其适用于复杂角色动画。本文通过具体案例讲解Mecanim动画状态机的使用方法及原理。我们创建一个游戏角色并设计行走、奔跑和攻击动画,详细介绍动画状态机设置及脚本控制。首先导入动画资源并添加Animator组件,然后创建Animator Controller并设置状态间的转换条件。通过编写C#脚本(如PlayerMovement)控制动画状态切换,实现基于玩家输入的动画过渡。此方法不仅适用于游戏角色,还可用于任何需动态动画响应的对象,增强游戏的真实感与互动性。
46 0
|
20天前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
45 0
|
20天前
|
开发者 C# Android开发
明白吗?Xamarin与Native的终极对决:究竟哪种开发方式更适合您的项目需求,让我们一探究竟!
【8月更文挑战第31天】随着移动应用开发的普及,开发者面临多种技术选择。本文对比了跨平台解决方案Xamarin与原生开发方式的优势与劣势。Xamarin使用C#进行跨平台开发,代码复用率高,可大幅降低开发成本;但因基于抽象层,可能影响性能。原生开发则充分利用平台特性,提供最佳用户体验,但需维护多套代码库,增加工作量。开发者应根据项目需求、团队技能和预算综合考量,选择最适合的开发方式。
59 0