web实验四表单处理实验

news2024/11/15 8:52:09

实验原理

通过jQuery实现修改HTML标签属性,完成网页的动态显示效果,理解JavaScript语法、动态页面的实现原理、基本设计思想及实现方法。

实验目的

理解并掌握基于id、class、name等HTML属性选择器的实现方法
理解并掌握控制disabled、checked、hidden等HTML标签元素属性值的方法
理解并掌握控制if、for等基本语法的使用
理解并掌握HTML基本事件方法
理解并掌握jQuery中css选择器,jQuery选择的使用方法
理解并掌握jQuery基本事件监听方法
理解并掌握Callback回调方法的作用、意义
理解并掌握定义回调的匿名方法的实现方法
理解并掌握基本jQuery基本动画效果的实现方法

实验内容

创建maven Web项目及模块,experiment-04,项目打包类型为war

需求+设计提示

需求+1
必须同意协议,方可填写注册表单
用户名必须大于等于6位,否则弹出警告框
未来意向,支持取消选中的单选框
喜欢的课程,能且仅能选择2项
当用户名大于等于6字符,喜欢的课程小于等于2项时,不可提交表单

解决方案
协议,对多个元素实现同时的disabled/abled元素状态。
实现思路:初始化时,基于jquery将表单内所有输入域禁用,协议复选框选中结果, 与表单内除提交按钮以外的全部元素禁用状态绑定。Form表单没有disabled属性。

用户名,监听值改变事件判断用户输入长度。

课程,判断数量,disabled/abled部分元素。实现思路:监听checkbox组的点击事件, 判断选中状态数量与设定数量关系,注意使用合适的选择器。

提交按钮,当符合2个条件时,按钮可用。实现思路:为2个条件声明判断标识, 在元素事件监听中改变标识值,监听指定元素值改变事件,判断标识。

动态添加地址,动态在列表中添加元素。实现思路:监听button click事件, 创建不显示的元素对象,追加至列表底端,添加滑动动画效果

需求+1
输入地址后,点击添加地址按钮,将输入信息动态添加至列表

需求+1
意向,再次点击radio时取消radio的选中状态。

实现思路
添加HTML隐藏输入框,用于存放单选框值,点击单选框时判断值是否与隐藏域相等;
不相等,则为第一次点击,将单选框值赋给隐藏框,
相等,则为第二次点击,置被点击单选框为未选中状态,重置隐藏域值

无法基于radio checked状态判断,因为每次点击radio时该radio均为checked状态

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>注册</h1>
<label>
  <input type="checkbox" id="legal">我已阅读相关说明并遵守相关法律</label>
<form id="register">
  <div>
    用户名:
    <input type="text" name="username">
    <br> 未来意向:
    <label><input type="radio" name="purp" value="1">Java工程师</label>
    <label><input type="radio" name="purp" value="2">测试工程师</label>
    <label><input type="radio" name="purp" value="3">前端工程师</label>
    <!-- 添加隐藏域 -->
    <input type="hidden" name="purpose">
    <br>
    <br> 请从以下课程中选择2项最喜欢的课程
    <ul>
      <li>
        <label>
          <input type="checkbox" name="courses">Web开发技术
        </label>
      </li>
      <li>
        <label>
          <input type="checkbox" name="courses">软件项目管理
        </label>
      </li>
      <li>
        <label>
          <input type="checkbox" name="courses">数据库原理
        </label>
      </li>
      <li>
        <label>
          <input type="checkbox" name="courses">系统分析与设计
        </label>
      </li>
    </ul>
    地址:
    <ul id="ul_address">
    </ul>
    <input name="address">
    <button type="button" id="button_address">添加地址</button>
    <br>
  </div>
  <button type="submit">提交</button>
</form>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
  $(function (){
    var usernameValid = false;
    var coursesValid = false;
    // 初始化时,禁用表单内所有输入域
    $("#register :input").not("#legal").prop("disabled",true);
    //协议复选框选中结果,与表单内除提交按钮以外的全部元素禁用状态绑定
    $("#legal").on("change",function (){
      $("#register :input").not("#legal,:submit").prop("disabled",!this.checked);
    });
    /* 去空格后,判断输入长度 */
   $("[name=username]").change(function (){
      var len = $(this).val().trim().length;
      if(len < 6){
        usernameValid = false;
        alert("用户名长度必须大于等于6")
      }
      else{
        usernameValid = true;
      }
    });
    // 未来意向,支持取消选中的单选框
    $("[name=purp]").on("click",function (){
      var val = $(this).val();
      var hidden = $("[name=purpose]");
      if(val == hidden.val()){
        $(this).prop("checked", false);
        hidden.val("");
      }
      else{
        hidden.val(val);
      }
    });
    $("[name=courses]").on("change", function(){
      var checked = $("[name=courses]:checked");
      var len = checked.length;
      if(len >= 2){
        // 超过2项,禁用未选中的复选框
        $("[name=courses]:not(:checked)").prop("disabled", true);
        coursesValid = true;

      }else{
        // 小于等于2项,启用所有复选框
        $("[name=courses]").prop("disabled", false);
        coursesValid = false;
      }
    });
    // 当用户名大于等于6字符,喜欢的课程小于等于2项时,不可提交表单
    $("input[name=username], input[name=courses]").change(() => {
      let dis = usernameValid && coursesValid;
      // 当2个状态均符合规范时,提交按钮可用
      $("button:submit").prop("disabled", !dis);
    });
  });

  // 输入地址后,点击添加地址按钮,将输入信息动态添加至列表
  /* 方法一
$("#button_address").on("click", function(){
   var address = $("[name=address]").val();
   if(address){

     var li = $("<li>").text(address).hide();
     //使用 $("<li>") 创建一个 li 元素的 jQuery 对象。
    // 使用 .text(address) 方法为这个对象设置文本内容为 address 变量的值。
   // 使用 .hide() 方法为这个对象设置 display 属性为 none,使其不可见。
     // 追加至列表底端,并添加滑动动画效果
     $("#ul_address").append(li).find(":last").slideDown();
     // 清空地址输入框的值
     $("[name=address]").val("");
   }
 });
 */
  /* 方法二 */
  $("#button_address").click(() => {
    let input = $("input[name=address]");
    let item = $(`<li>${input.val()}</li>`);
    input.val("");
    item.css("display", "none");
    $("#ul_address").append(item);
    item.fadeIn(1000);
    // 使用 .fadeIn(1000) 方法为 item 对象添加一个渐显的动画效果,使其从不可见变为可见。
  });
</script>
</body>
</html>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python自动化办公——定制化读取Excel数据并写入到word表格

Python自动化办公——Excel写word表格 文章目录 Python自动化办公——Excel写word表格一、引言二、数据准备三、python代码1、方法一2、方法二3、方法三 一、引言 最近到了毕业设计答辩的时候&#xff0c;老师让我帮毕业生写一段毕业设计的功能就是提供一个学士学位授予申请表…

网安自学路线学习心得/学习规划

趁着今天下班&#xff0c;我花了几个小时整理了下&#xff0c;非常不易&#xff0c;希望大家可以点赞收藏支持一波&#xff0c;谢谢。 我的经历&#xff1a; 我 19 年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&#xff0c;到了大三大…

pywinauto自动化测试使用经验

本文主要介绍了pywinauto自动化测试使用经验&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 在开发Windows应用程序时&#xff0c;我们经常需要进行测试来确保程序…

CSS基础学习--16 Float(浮动)

一、定义 CSS 的 Float&#xff08;浮动&#xff09;&#xff0c;会使元素向左或向右移动&#xff0c;其周围的元素也会重新排列。 Float&#xff08;浮动&#xff09;&#xff0c;往往是用于图像&#xff0c;但它在布局时一样非常有用。 元素的水平方向浮动&#xff0c;意味着…

【Spring】— Spring MVC的注解

目录 Spring MVC的注解1.DispatcherServlet2.Controller注解类型3.RequestMapping注解类型&#xff08;1&#xff09;RequestMapping注解的使用&#xff08;2&#xff09;RequestMapping注解的属性&#xff08;3&#xff09; 组合注解&#xff08;4&#xff09;请求处理方法的参…

2023天猫纸品数据:抽纸销额高达25亿,湿厕纸为重点增长类目

如今&#xff0c;纸巾早已成为人们日常生活的必需品。作为刚需物品&#xff0c;纸巾的产品形态呈现多元化、细分化趋势&#xff0c;其市场规模也比较庞大。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年1月至4月&#xff0c;天猫平台上纸巾行业大盘的销量超过1.6…

05 用况图

用况图 1. 主题 是由一组用况所描述的一个系统或子系统。 以Credit Card Validation System 所标识的矩形就是一个主题&#xff1a; 2. 用况 使用视角&#xff1a; 用况表达了参与者使用系统的一种方式。 系统设计视角&#xff1a;一个use case规约了系统可以执行的一个动…

Spring AOP讲解

目录 Spring AOP概念 AOP适用场景 AOP 组成 1、切面&#xff08;Aspect&#xff09; 2、切点&#xff08;Pointcut&#xff09; 3、通知&#xff08;Advice&#xff09; 4、连接点&#xff08;Join Point&#xff09; Spring AOP实现 添加AOP框架依赖 定义切面和切点…

解决 An attempt was made to call a method that does not exist. 问题详解

哈喽大家好&#xff0c;我是阿Q。今天在开发代码的过程中&#xff0c;由于手抖&#xff0c;不知道引入了什么包依赖&#xff0c;导致项目启动一直报错&#xff0c;特写本文来记录下解决问题的经过。 文章目录 问题描述报错信息如下报错描述 解决方法总结 有想赚点外块|技术交流…

hadoop基础(二)

JAVA客户端 环境搭建 创建Maven项目,添加Hadoop依赖. <dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId…

神级插件Bito介绍及使用

还在用其他AI?不是说它不火了&#xff0c;而是你基本上很难访问了。这里介绍个便宜且免费的AI聊天插件&#xff0c;一样可以很棒。永久免费且不限制次数&#xff0c;有这好事&#xff1f;且听下文分解。 前言 虽然GPT 是用不了&#xff0c;推荐下国内的一些大模型&#xff0c…

Win10下pytorch3D安装方法,本人亲测可用

本人的电脑配置如下&#xff1a; GPU&#xff1a;GTX 1050TiCUDA&#xff1a;11.1python&#xff1a;3.8pytorch&#xff1a;1.9.0pytorch3d&#xff1a;0.7.1NVIDIA CUB&#xff1a;cub-1.9.10-1 目录 1.版本确认 2.下载cub 3.下载pytorch3d 4.下载VSC2019 5.编译pytorch…

Web3开发准备工作 手把手带你创建自己的 MetaMask 账号

查看本文 您需要在自己的谷歌浏览器中添加 扩展工具 MetaMask 如果没有添加 可以查看文章 Web3 将 MetaMask添加入谷歌浏览器 扩展程序中 我们打开它并点击开始使用 那么 我们第一次进来 肯定是啥都没有 所以 我们点 创建钱包 他这里 就会先跟你说清楚 他不会收集你的 秘钥 地…

握手信号的打拍

在数字电路的设计中,对关键路径的处理方法之一就是插入寄存器,然而,对握手信号插入寄存器则需要进行特殊的处理,否则可能导致数据传输的错乱,严重影响电路的功能。 如图所示,为了阐述对握手信号打拍的处理方式,我们给出了下图所示的简化模型,其中,上游的握手信号包括v…

OpenCV迭代去畸变undistortPoints 与vins的迭代不同 第二章vins前端 第三章imu预积分 第四章vio初始化

OpenCV去畸变undistortPoints原理解析 不动点迭代法—单变量非线性方程近似根matlab求解 淦VINS-MONO源码 03–openCV与VINS中去畸变方法的不同 这里用的方法和openCV不同&#xff0c;假设现在求A点的去畸变坐标&#xff0c;那么我们将A的坐标直接代入畸变模型中&#xff0c;求…

【Leetcode】2. 两数相加

一、题目 1、题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例1: …

知识图谱项目——红色文化之张学良人物知识图谱(Neo4j+vue+flask+mysql实现)

张学良人物简史知识图谱_说明文档 本项目为人工智能专业大三知识图谱课程期末作业。意在完成一个以张学良为背景的红色文化类知识图谱。文末放上本项目的代码地址。 文章目录 张学良人物简史知识图谱_说明文档:rocket:前端:rocket:后端:rocket:中间件:rocket:数据库:rocket:服…

深度学习(22)——YOLO系列(2)

深度学习&#xff08;22&#xff09;——YOLO系列&#xff08;2&#xff09; 文章目录 深度学习&#xff08;22&#xff09;——YOLO系列&#xff08;2&#xff09;1. model2. dataset3. utils4. test/detect5. detect全过程 今天先写YOLO v3的代码&#xff0c;后面再出v5&…

代码托管/版本控制工具:Git的安装和使用

目录 一、Git的下载和安装二、Git基本配置三、代码上传到远程仓库四、代码下载到本地 一、Git的下载和安装 1.登录GitHub官网https://github.com/注册账户密码 2.登录https://git-scm.com/download/win &#xff08;根据自己电脑的位数和系统下载git&#xff09; 3.双击Gi…

02-IDEA 集成Maven

一. 下载IDEA编辑器 下载地址&#xff1a;Download IntelliJ IDEA – The Leading Java and Kotlin IDE 选中免费开源的社区版本 创建桌面图标和添加安装路径到系统变量&#xff0c;其他的默认安装即可。 二. 配置Maven环境 分为局部配置和全局配置 1. 局部配置maven环境 …