input 标签原生实现数字选择器

这篇具有很好参考价值的文章主要介绍了input 标签原生实现数字选择器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用开源的UI框架时,实现数字选择器很容易,直接拷贝就行,如iview、elementui...等。但有时项目不使用第三方样式库,这样的话UI控件只能自己实现。笔者就遇到过这样的情况,自己实现数字选择器,下面分享下实现思路

首先要能拿到 input框输入的值,这里会想到2个事件,onchange 和 oninput

onchange 输入完成后,失去焦点后触发

oninput 输入时就触发

这里我们希望输入的是数字就显示,不是数字就不显示,因此我们使用oninput,因为onchange是输入完成后触发,这样输入的如果不是数字就会显示在输入框中,即使再将其处理掉,感觉不是很好。而使用oninput是在输入时触发,可以更好的进行控制

1、先拿到输入的值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" oninput="numInput(event)">
		<script>
			function numInput(e) {
				console.log(e.target.value);
			}
		</script>
	</body>
</html>

上面代码能够在输入后拿到输入的值

2、效验输入值是否合法

判断输入的值是否符合要求,这里使用正则表达式,如果符合要求我们不做处理,让它正常显示;如果不符合要求,我们要显示输入之前的值,要显示输入之前的值怎么实现呢?oninput事件每次给我们返回的是输入最新的值后的整个值,如输入1事件拿到的是1,再输入2,事件拿到的是12,这里笔者采用取巧的办法,如果输入最新值后不能效验通过正则表达式,就将输入最新值后的整个值截取掉最后一位,这样拿到的就是输入之前的值,再将输入之前的值赋值给oninput事件拿到的整个值,就能保证最新输入的不合法的值不会显示在input输入框中

代码如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" oninput="numInput(event)">
		<script>
			function numInput(e) {
				console.log(e.target.value);
				//获取输入之前的值
				var oldValue = e.target.value.substring(0, e.target.value.length-1)
				//正则表达式校验
				var reg = RegExp("^([0]|[1-9][0-9]*)$")
				if(!reg.test(e.target.value)) {
					//校验不合法,赋值输入前的值
					e.target.value = oldValue
				}
			}
		</script>
	</body>
</html>

运行效果

input属性选择器,html5,ui,前端,javascript,html5,html

数字选择器完成

3、最大值

设置一个可以输入的最大值,这里可以在代码中写死,或者借助 input自带的 max属性

如果输入的值大于最大值,则显示输入前的值

方式1、代码中写死

设置最大值 99999

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" oninput="numInput(event)">
		<script>
			function numInput(e) {
				console.log(e.target.value);
				//获取输入之前的值
				var oldValue = e.target.value.substring(0, e.target.value.length-1)
				//正则表达式校验
				var reg = RegExp("^([0]|[1-9][0-9]*)$")
				if(reg.test(e.target.value)) {
					if(parseInt(e.target.value) > 99999) {
						//大于最大值,赋值输入前的值
						e.target.value = oldValue
					}
				} else {
					//校验不合法,赋值输入前的值
					e.target.value = oldValue
				}
			}
		</script>
	</body>
</html>

运行效果

input属性选择器,html5,ui,前端,javascript,html5,html

 

方式2、借助max属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" max="99999" oninput="numInput(event)">
		<script>
			function numInput(e) {
				console.log(e.target.value);
				//获取输入之前的值
				var oldValue = e.target.value.substring(0, e.target.value.length-1)
				//正则表达式校验
				var reg = RegExp("^([0]|[1-9][0-9]*)$")
				if(reg.test(e.target.value)) {
					if(parseInt(e.target.value) > e.target.max) {
						//大于最大值,赋值输入前的值
						e.target.value = oldValue
					}
				} else {
					//校验不合法,赋值输入前的值
					e.target.value = oldValue
				}
			}
		</script>
	</body>
</html>

 运行效果

input属性选择器,html5,ui,前端,javascript,html5,html

 

至此完文章来源地址https://www.toymoban.com/news/detail-727107.html

到了这里,关于input 标签原生实现数字选择器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML5新增的拖拽属性draggable,怎么实现拖拽?

    1、draggable 属性规定元素是否可拖动。 2、提示: 链接和图像默认是可拖动的。 3、提示: draggable 属性经常用于拖放操作。 注意:draggable 属性是 HTML5 新增的。 设置属性值 值 描述 true 规定元素是可拖动的。 false 规定元素是不可拖动的。 auto 使用浏览器的默认特性。 代码演

    2024年02月16日
    浏览(40)
  • HTML5 <rt> 标签、HTML5 <ruby> 标签

    HTML5 rt标签用于表示为ruby标签中的注释内容。 一个 ruby 注释: 尝试一下 » IE 9+、Firefox、Opera、Chrome 和 Safari 支持 rt 标签。 注释: IE 8 或更早版本的 IE 浏览器不支持 rt 标签。 rt 标签定义字符(中文注音或字符)的解释或发音。 将 rt 标签与 ruby 和 rp 标签一起使用: ruby 元素

    2023年04月23日
    浏览(118)
  • HTML5 <s> 标签、HTML5 <sub> 和 <sup> 标签

    s 标签定义加删除线的文本。HTML 5 中不再支持这个标签。请使用 CSS 代替。 在 HTML 4.01 中不赞成使用 s 标签。 在 HTML 5 中不支持 s 标签。 提示:请使用 del 标签代替。 关于s 标签的详细详细,你可以参考本站的“HTML s 标签”一节! HTML5 sub和sup标签分别为文档中的内容定义下标

    2024年02月01日
    浏览(80)
  • input标签,新增那些属性

    input标签作为页面与用户交互的重要入口,了解掌握input的属性,至为重要。 HTML5给input表现的type属性,添加了很多的属性值,用来丰富了文本框类型。比如: 如果是H5页面的话,在不同的手机会有不同的展示,比如: 唤醒的手机本身的输入的效果。 input标签上传文件的话,

    2024年02月09日
    浏览(43)
  • 【HTML5系列】第一章 · HTML5新增语义化标签

            Hello大家好, 我是【 麟-小白 】,一位 软件工程 专业的学生,喜好 计算机知识 。希望大家能够一起 学习进步 呀!本人是一名 在读大学生 ,专业水平有限,如发现 错误 或 不足之处 ,请多多指正!谢谢大家!!!         如果 小哥哥小姐姐们 对我的文章感兴趣

    2024年02月04日
    浏览(65)
  • HTML-常见标签、HTML5新特性

    (1) C/S架构即Client/Server(客户机/服务器)结构。 (2) C/S 架构特点 ​ C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。但是该结构的程序是针对性开发,变更不够灵活,维护和管理的难度较大。通常只

    2024年02月11日
    浏览(74)
  • HTML5新增的标签

    header :头部标签 nav :导航标签 article :内容标签 section :定义文档某个区域 aside :侧边栏标签 footer :尾部标签 当前audio仅支持三种视频格式:尽量使用mp3格式 常见属性: 属性 值 描述 autoplay autoplay 如果出现该属性,则音频在就绪后马上播放 controls controls 如果出现该属性,则向用户

    2024年02月04日
    浏览(40)
  • HTML5前端标签练习

    标签的分类 标签的嵌套 a标签 验证form表单朝后端提交数据 效果 代码

    2024年02月08日
    浏览(57)
  • HTML5 <select> 标签

    HTML5 select标签用于实现下拉列表。请参考下面的示例: 创建带有 4 个选项的选择列表: 尝试一下 » 所有主流浏览器都支持 select 标签。 select 元素用来创建下拉列表。 select 元素中的 option 标签定义了列表中的可用选项。 提示: select 元素是一种表单控件,可用于在表单中接

    2024年02月02日
    浏览(44)
  • HTML5概述 - 语义化标签

    1、什么是 HTML5 HTML5 不是一门新的语言,而是我们之前学习的 HTML 的第五次重大修改版本。 2、HTML 的发展历史 •超文本标记语言(第一版,不叫 HTML 1.0)——在 1993 年 6 月作为互联网工程工作小组(IETF)工作草案发布(并非标准);•HTML 2.0——1995 年 11 月作为 RFC 1866 发布

    2024年02月08日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包