手把手教你使用JavaScript实现限定输入内容

Karen110
• 阅读 1750

一、前言

在Web项目开发中,经常会遇到一些只能输入固定内容的文本框。例如,只可以输入字母、数字的文本框等,本文的案例是利用正则表达式语法来实现只可以输入四位数的年份、一位数或二位数的月份。接下来,小编大家一起来学习,如何实现限定输入内容!

二、项目准备

开发工具:HBuilderX

浏览器:Google Chrome浏览器

三、项目目标

1.掌握正则表达式的语法。

2.学会应用正则表达式。

3.掌握焦点事件和失去焦点事件。

四、项目实现

HTML


<div id="box">
      <div id="box_01">
          <h2>限定输入内容</h2>
      </div>
      <div id="box_02">
          <img src="img/1.jpg" />
      </div>
      <div id="box_03">
      <form id="form">
          年份<input type="text" name="year" />
          月份<input type="text" name="month" />
      <input type="submit" value="查询" />
      </form>
  </div>
  </div>
  <div id="res"></div>

在上面代码中,div的id为box相当于一个大盒子,id为box_01、box_02、box_03相当于一个小盒子,这些小盒子依次放入大盒子中。

id为box_01主要是放置标题;

id为box_02主要是放置图片;

id为box_02主要是放置表单;

id为res是用来检验年份和月份输入是否正确提示信息。

CSS3


#box{
        width: 800px;
        height: 430px;
        display: flex;
        text-align: center;
        flex-direction: column;
        justify-content: center;
    }
    #box_01{
        width: 800px;
        height: 70px;
        color: #0086B3;
    }
    img{
        width: 400px;
        height: 300px;
    }
    #box_02{
        width: 800px;
        height: 310px;
    }
    #box_03{
        width: 800px;
        height: 50px;
    }
    #res{
        width: 800px;
        height: 100px;
        font-weight: bold;
        text-align: center;
    }

在上面代码中,#box表示大盒子的样式,宽度和高度分别为800、430px,使用弹性布局display: flex。

flex-direction属性表示控制主轴的方向,colum表示垂直方向。

justify-content属性表示项目在主轴上的对齐方式,center表示中间。

#box_01、#box_02、#box_03主要是设置div块的宽度和高度。

#res设置div块宽度、高度、字体加粗(font-weight)、文字对齐方式(text-align)。

JavaScript

1.首先是获取操作元素的对象


var f=document.getElementById('form')
var res=document.getElementById('res')
var ipc=document.getElementsByTagName('input')

在上面代码中,使用document.getElementById()方法获取操作元素对象的id,document.getElementsByTagName()方法是返回带有标签名的对象集合。

2.检验年份函数chooseYear()

function chooseYear(y){
    if(!y.value.match(/^\d{4}$/)){
        y.style.borderColor='yellow';
        res.innerHTML='您的输入有误,年份需要4位数字';
        return false;
    }
    alert('年份格式输入正确')
    return true;
}

在上面代码中,chooseYear(y)函数中的y参数表示年份元素的一个对象,通过获取y的value值,然后使用match()方法进行正则匹配。

如果年份不是四位数,通过设置文本框的边框颜色为黄色,获取id为res,插入提示信息的内容。

如果年份是四位数,则使用alert()方法,弹出一个弹框显示“年份格式输入正确”。

3.检验月份函数chooseMonth()


function chooseMonth(m){
    if(!m.value.match(/^((0?[1-9])|(1[012]))$/)){
        m.style.borderColor='yellow';
        res.innerHTML='您的输入有误,月份1~12范围内'
        return false;
    }
    alert('月份格式输入正确')
    return true;
}

在上面代码中,chooseMonth(m)函数中的m参数表示月份元素的一个对象,通过获取m的value值,然后使用match()方法进行正则匹配。

”(0?[1-9])“表示前面有0或没有0的表示第一月份到第九月份;

“(1[012])”表示第十月份到十二月份。

4.设置年份和月份焦点事件

ipc.year.onfocus=function(){
    this.style.borderColor='blue'
}
ipc.month.onfocus=function(){
    this.style.borderColor='blue'
}

在上面代码中,用户点击年份和月份输入框,设置焦点事件,之后,设置文本框的颜色为蓝色。

5.设置年份和月份失去焦点——主要是用来优化用户的体检效果


ipc.year.onblur=function(){
    this.value=this.value.trim();
    chooseYear(this);
}
ipc.month.onblur=function(){
    this.value=this.value.trim();
    chooseMonth(this);
}

在上面代码中,trim()方法是去掉两端的空格。

6.检验提交的表单

f.onsubmit=function(){
    return chooseYear(ipc.year)&&chooseMonth(ipc.month)
};

在上面代码中,表单提交时,调用chooseYear()和chooseMonth()函数检验年份和月份。

效果图如下所示:

手把手教你使用JavaScript实现限定输入内容

五、总结

1.本文基于JavaScript基础,实现限定输入内容的功能。对每一个div层进行详解,让读者更好的理解。

2.在JavaScript中首先获取操作元素的对象,事件处理函数年份和月份分别是chooseYear()、chooseMonth()。chooseYear(y)和chooseMonth(m)函数中获取年份元素和月份元素对象,之后,获取它们的value值,使用match()方法进行正则匹配。为了用户的体检效果添加焦点事件和失去焦点事件。

3.代码没有那么复杂,希望对你有所帮助!

最后需要本文项目代码的小伙伴,请在公众号后台回复“限定内容”关键字进行获取,如果在运行过程中有遇到任何问题,请随时留言或者加小编好友,小编看到会帮助大家解决bug噢!

**-----**------**-----**---**** End **-----**--------**-----**-****

手把手教你使用JavaScript实现限定输入内容

往期精彩文章推荐:

手把手教你使用JavaScript实现限定输入内容

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
翼
3年前
正则表达式限制输入框只能输入数字
1正则表达式限制输入框只能输入数字<inputtype"text"onkeyup"this.valuethis.value.replace(/^d/g,')"onafterpaste"this.valuethis.value.replace(/^d/g,')"name"f_order"value"1"/其
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Souleigh ✨ Souleigh ✨
3年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
AJPFX总结关于Java中过滤出字母、数字和中文的正则表达式
1、Java中过滤出字母、数字和中文的正则表达式(1)过滤出字母的正则表达式\^(AZaz)\(2)过滤出数字的正则表达式\^(09)\(3)过滤出中文的正则表达式\^(\\\\u4e00\\\\u9fa5)\(4)过滤出字母、数字和中文的正则表达式\^(azAZ09\\\\u
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这