老师,我这个正确表达式正确吗?

老师,我这个正确表达式正确吗?

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

    <head>

        <meta charset="UTF-8">

        <title>新建图书信息</title>

        <link rel="stylesheet" href="css/bootstrap.min.css">

        <link rel="stylesheet" href="css/add.css">

    </head>

    <body>

        <nav class="navbar navbar-default">

            <div class="container">

                <div class="navbar-header">

                    <a class="navbar-brand" href="/dept/list.do">

                        图书信息管理

                    </a>

                </div>

            </div>

        </nav>

        <div class="container">

            <div class="jumbotron">

                <h1>Hello, XXX!</h1>

                <p>请小心地新增图书信息,要是建了一个错误的就不好了。。。</p>

                <p id="p1"> </p>

            </div>

            <div class="page-header">

                <h3><small>新建</small></h3>

            </div>

            <form class="form-horizontal" action="/dept/add.do" method="post">


                <div class="form-group">

                    <label for="name" class="col-sm-2 control-label">图书编号 :</label>

                    <div class="col-sm-8">

                        <input name="bookId" class="form-control" id="bookId">

                    </div>

                </div>

                <div class="form-group">

                    <label for="name" class="col-sm-2 control-label">图书名称 :</label>

                    <div class="col-sm-8">

                        <input name="bookName" class="form-control" id="bookName">

                    </div>

                </div>

                <div class="form-group">

                    <label for="categoryId" class="col-sm-2 control-label">分类 :</label>

                    <select id="categoryId" name="categoryId" class="col-sm-2 form-control" style="width: auto;margin-left: 15px">

                       <option value="ca0001" selected="">计算机</option>

                       <option value="ca0002">文学</option>

                       <option value="ca0003">历史</option>

                       <!-- 下拉列表的内容要从分类中进行读取,value值是分类id -->

                    </select>

                </div>


                 <div class="form-group">

                    <label for="name" class="col-sm-2 control-label">价格 :</label>

                    <div class="col-sm-8">

                        <input name="bookPrice" class="form-control" id="bookPrice">

                    </div>

                  </div>

                   

                  <div class="form-group" >

                    <label for="name" class="col-sm-2 control-label">图书封面 :</label>

                    <input type="file" id="bookPic" name="bookPic" style="padding-left: 15px">

                  </div>


                  <div class="form-group">

                    <label for="name" class="col-sm-2 control-label">备注 :</label>

                    <div class="col-sm-8">

                        <input name="remarks" class="form-control" id="remarks">

                    </div>

                  </div>


                <div class="form-group">

                    <div class="col-sm-offset-2 col-sm-10">

                        <button type="submit" class="btn btn-primary">保存</button>&nbsp;&nbsp;&nbsp;

                    </div>

                </div>

            </form>

        </div>

        <footer class="text-center" >

            copy@imooc

        </footer>

    </body>

    <script type="text/javascript" src="js/jquery-3.4.1.js"></script>

    <script type="text/javascript">

     $("#bookPrice").change(function (){

    var n=/\D+/;

var i=docunment.getElementById("bookPrice");

if(n.test(i)!=false){

document.getElementById("p1").innerHTML="输入有误,请重新输入";

      document.getElementById("bookPrice").value="";//输入错误时清除文本框

}

     });

    </script>

</html>



老师,onChange事件是再修改完值之后那个文本框失去了焦点后触发,还是再输入的过程中随时检查值有没有变?

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

同学你好!

  1. \D 是匹配非数字的,\d是匹配数字的。你使用两种方法都是可以的。 只是逻辑不同:

    如果输入不为数字,没有匹配到数字,则n.test(i) 为fasle。输出错误信息

    http://img1.sycdn.imooc.com//climg/5dfdcdb40972060505050205.jpg

    如果输入不为数字,匹配到的是非数字,则n.test(i) 为true。不等于fasle时输出错误信息

    http://img1.sycdn.imooc.com//climg/5dfdcde609dc4ed705210249.jpg

  2. 正则中符合为true,不符合为false

祝学习愉快~

好帮手慕柯南 2019-12-21 11:58:29

同学你好!

  1. 之前老师解释过为什么要用onBlur哦

    http://img1.sycdn.imooc.com//climg/5dfd980709dfcd7806460129.jpg

  2. Jquery中使用onBlur就是写成blur, 就像你原来写的onChange事件一样,需要将on去掉然后首字母小写

    http://img1.sycdn.imooc.com//climg/5dfd983d09612b0704430115.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 散落满天的回忆 #1
    老师,正则表达式设置\D然后判断是否有匹配的内容如果有就显示错误信息和 正则表达式\d n.test(i)==false时提示错误的效果为什么不一样? 老师如果一串字符串中一段的字符串符合正则表达式他是返回true还是false?
    2019-12-21 12:11:50
好帮手慕柯南 2019-12-21 10:08:07

同学你好!

  1. 输入价格错误时进行提示你的代码有问题

    你的document写错了,写成了docunment;应该是n.test(i)==false时提示错误,你写成了!=false,推荐使用onBlur事件,修改后的代码:

    http://img1.sycdn.imooc.com//climg/5dfd7d32099105af10240480.jpg

    建议:你可以给.p1设置一个颜色,这样错误信息的提示就会有颜色,比如:

    http://img1.sycdn.imooc.com//climg/5dfd7e180969631207190146.jpg

  2. 从同学贴出的代码来看如果你后台传给前台的变量名是id,则JSTL写的没有问题

    http://img1.sycdn.imooc.com//climg/5dfd7eaf09cb4c0105280131.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 散落满天的回忆 #1
    老师,为什么要使用onBlur事件?代码中的不就是blur事件吗?
    2019-12-21 11:33:22
提问者 散落满天的回忆 2019-12-20 21:08:19

<div class="form-group">

                    <label for="categoryId" class="col-sm-2 control-label">分类 :</label>

                    

                    <select id="categoryId" name="categoryId" class="col-sm-2 form-control" style="width: auto;margin-left: 15px">

                       <c:forEach items="${id}" var="i"  >

                       <option value=${i.id} >${i.name}</option>

                        </c:forEach>

                       <!-- 下拉列表的内容要从分类中进行读取,value值是分类id -->

                    </select>

                  


好帮手慕珊 2019-12-20 19:02:11

同学,你好!分别回答你的两个问题:

1、你的正则表达式是想限制不能输入非数字吧,那应该把\D改成\d,\d是匹配数字,\D是匹配非数字

http://img1.sycdn.imooc.com//climg/5dfca89009e376b401360031.jpg

进行正则表达式的验证,推荐这个网站: https://tool.oschina.net/regex# ,可以在线进行验证

2、onChange事件是只要文本框中的内容有改变就会触发,建议改成onBlur事件,表示文本框失去焦点时触发

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 散落满天的回忆 #1
    老师,我使用 \D然后判断是否有匹配的内容如果有就清除文本框的内容并提示有什么问题吗?如果是\d应该怎么判断呢?
    2019-12-20 20:51:02
  • 提问者 散落满天的回忆 #2
    老师,我这个JSTL书写正确吗?
    2019-12-20 21:08:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师