form表单的基本使用

news2024/12/25 9:27:38

1、什么是表单

        表单在网页中主要负责数据采集功能HTML中的<form>标签,就是用于采集用户输入的信息,并通过<form>标签的提交操作,把采集到的信息提交到服务器端进行处理。

 

2、表单的组成部分

<form>

    <input type="text" name="email_or_mobile" />

    <input type="password" name="password" />

    <input type="checkbox" name="remember_me" checked />

    <button type="submit">提交</button>

</form>

  • 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
  • 表单由三个基本部分组成:表单标签、表单域、表单按钮 

3、<form>标签的属性

<form>标签用来采集数据,<form>标签的属性则是用来规定如何把采集到的数据发送到服务器

属性

描述

action

URL地址

规定当提交表单时,向何处发送表单数据

method

getpost

规定以何种方式把表单数据提交到 action URL

enctype

application/x-www-form-urlencoded

multipart/form-data

text/plain

规定在发送表单数据之前如何对其进行编码

target

_blank

_self

_parent

_top

framename

规定在何处打开 action URL

3.1、action

  • action 属性用来规定当提交表单时,向何处发送表单数据
  • action 属性的值应该是后端提供的一个 URL 地址,这个 URL 地址专门负责接收表单提交过来的数据。
  • <form> 表单在未指定 action 属性值的情况下,action 的默认值为当前页面的 URL 地址。

注意:当提交表单后,页面会立即跳转到 action 属性指定的 URL 地址

3.2、target

  • target 属性用来规定在何处打开 action URL
  • 它的可选值有5个,默认情况下,target 的值是 _self,表示在相同的框架中打开 action URL

描述

_blank

在新窗口中打开。

_self

默认。在相同的框架中打开。

_parent

在父框架集中打开。(很少用)

_top

在整个窗口中打开。(很少用)

framename

在指定的框架中打开。(很少用)

3.3、method

  • method 属性用来规定以何种方式把表单数据提交到 action URL。
  • 它的可选值有两个,分别是 get post。
  • 默认情况下,method 的值为 get,表示通过URL地址的形式,把表单数据提交到 action URL

注意:

  • get 方式适合用来提交少量的、简单的数据。
  • post 方式适合用来提交大量的、复杂的、或包含文件上传的数据。
  • 在实际开发中,<form> 表单的 post 提交方式用的最多,很少用 get。例如登录、注册、添加数据等表单操作,都需要使用 post 方式来提交表单。

3.4、enctype

  • enctype 属性用来规定在发送表单数据之前如何对数据进行编码
  • 它的可选值有三个,默认情况下,enctype 的值为 application/x-www-form-urlencoded,表示在发送前编码所有的字符。

描述

application/x-www-form-urlencoded

在发送前编码所有字符(默认)

multipart/form-data

不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain

空格转换为 “+” 加号,但不对特殊字符编码。(很少用)

注意:

  • 在涉及到文件上传的操作时,必须enctype 的值设置为 multipart/form-data

  • 如果表单的提交不涉及到文件上传操作,则直接将 enctype 的值设置为 application/x-www-form-urlencoded 即可!

4、表单的同步提交及缺点

(1)什么是表单的同步提交

        通过点击 submit 按钮,触发表单提交的操作,从而使页面跳转到 action URL 的行为,叫做表单的同步提交。

(2)表单同步提交的缺点

  • <form>表单同步提交后,整个页面会发生跳转,跳转到 action URL 所指向的地址,用户体验很差。
  • <form>表单同步提交后,页面之前的状态和数据会丢失

(3)如何解决表单同步提交的缺点

如果使用表单提交数据,则会导致以下两个问题:

  1. 页面会发生跳转
  2. 页面之前的状态和数据会丢失

解决方案:表单只负责采集数据,Ajax 负责将数据提交到服务器

5、通过Ajax提交表单数据

5.1、监听表单提交事件

jQuery 中,可以使用如下两种方式,监听到表单的提交事件:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./lib/jquery.js"></script>
</head>

<body>

  <form action="/login" id="f1">
    <input type="text" name="user_name" />
    <input type="password" name="password" />
    <button type="submit">提交</button>
  </form>

  <script>
    $(function () {
      // 第一种方式
      // $('#f1').submit(function () {
      //   alert('监听到了表单的提交事件')
      // })

      // 第二种方式
      $('#f1').on('submit', function () {  
        alert('监听到了表单的提交事件2')
      })
    })
  </script>

</body>

</html>

5.2、阻止表单默认提交行为

        当监听到表单的提交事件以后,可以调用事件对象的 event.preventDefault() 函数,来阻止表单的提交和页面的跳转,示例代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./lib/jquery.js"></script>
</head>

<body>

  <form action="/login" id="f1">
    <input type="text" name="user_name" />
    <input type="password" name="password" />
    <button type="submit">提交</button>
  </form>

  <script>
    $(function () {
      // 第一种方式
      // $('#f1').submit(function (e) {
      //   alert('监听到了表单的提交事件')
      //   e.preventDefault()
      // })

      // 第二种方式
      $('#f1').on('submit', function (e) {  
        alert('监听到了表单的提交事件2')
        e.preventDefault()
      })
    })
  </script>

</body>

</html>

5.3、快速获取表单中的数据

(1)serialize()函数

为了简化表单中数据的获取操作,jQuery 提供了 serialize() 函数,其语法格式如下:

$(selector).serialize()

serialize() 函数的好处:可以一次性获取到表单中的所有的数据

(2)serialize()函数示例

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./lib/jquery.js"></script>
</head>

<body>

  <form action="/login" id="f1">
    <input type="text" name="username" />
    <input type="password" name="password" />
    <button type="submit">提交</button>
  </form>

  <script>
    $(function () {
      // 第一种方式
      /* $('#f1').submit(function (e) {
        e.preventDefault()
        var data = $(this).serialize()
        console.log(data)
      }) */

      // 第二种方式
      $('#f1').on('submit', function (e) {
        e.preventDefault()
        var data = $('#f1').serialize()
        console.log(data)
      })
    })

    // 调用的结果:
    // username=用户名的值&password=密码的值

  </script>

</body>

</html>

注意:在使用 serialize() 函数快速获取表单数据时,必须为每个表单元素添加 name 属性

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

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

相关文章

c#入门-objtct的方法

声明类型的基类 c#中的类都继承自object类&#xff0c;包括静态类。 静态类只是无法手动指定继承类型&#xff0c;而声明静态类时的关键字class&#xff0c;已经让他派生自object类了。 结构类型继承自ValueType类&#xff0c;而ValueType继承自object类。 数组继承自Array类…

【JavaScript】本地存储(localStorage、sessionStorage、cookie)

文章目录【JavaScript】本地存储(localStorage、sessionStorage、cookie)一. 概念二. 本地存储特性三. 会话级存储四. 持久性存储五. cookie六. 本地存储的区别(1) cookie和storage的区别(2) localStorage和sessionStorage的区别七. 案例&#xff1a;记住用户名【JavaScript】本…

ansible(第二天)

第二章&#xff1a;模块介绍 1.Ansible的三个命令模块 command shell raw 应尽量避免使用这三个模块来执行命令&#xff0c;因为其他模块大部分都是幂等性的&#xff0c;可以自动进行更改跟踪。 command、shell、raw不具备幂等性。注&#xff1a; 幂等性&#xff1a;简单来…

【2 - 随机森林 - 案例部分:随机森林在乳腺癌数据上的调参】菜菜sklearn机器学习

课程地址&#xff1a;《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期&#xff1a;sklearn入门 & 决策树在sklearn中的实现第二期&#xff1a;随机森林在sklearn中的实现第三期&#xff1a;sklearn中的数据预处理和特征工程第四期&#xff1a;sklearn中的降维算法…

vue3笔记案例——Suspense使用之骨架屏

文章目录skeleton组件sync组件Suspense使用skeleton组件 示例图 代码 <template><div class"sk"><div class"sk-2"><div class"sk-2-1"></div><div></div></div><hr><div class&qu…

亚马逊云科技 Build On -轻松搭建咖啡点单系统

【前言】 1、什么是Build On&#xff1f; Build On是亚马逊团队基于亚马逊云服务开发&#xff0c;打造的一系列可快速上手的实操性活动。通过通俗易懂的场景案例、简单快捷的开发路径&#xff0c;参与者可快速理解目标任务涉及的相关知识&#xff0c;同时对亚马逊云服务具备一…

【回答问题】ChatGPT上线了!推荐30个以上比较好的意图识别模型

【回答问题】ChatGPT上线了&#xff01;推荐30个以上比较好的意图识别github源码&#xff1f; 好的&#xff0c;这里列出 30 个相对比较优秀的意图识别 GitHub 源码&#xff1a; DeepPavlov Rasa Snips spaCy OpenAI GPT OpenAI DialogFlow ChatterBot Botpress Amazon Lex M…

ArcGIS基础实验操作100例--实验41提取道路面中心线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验41 提取道路面中心线 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1…

2022,我遭遇的那些小事

前言 2022&#xff0c;总感觉一晃眼就过去了&#xff0c;不知不觉自己坚持更文已经一周年了。回顾这一周年&#xff0c;无论是在技术成长上还是职业发展上&#xff0c;都有了许多新的体会。 裁员风波 还记得是四、五月份的一个上午&#xff0c;原本还在紧张的加班赶项目&…

educoder数据结构与算法 队列 第2关 实现一个链接存储的队列

本文已收录于专栏 &#x1f332;《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》&#x1f332; 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务&#xff1a;实现 step2/CLnkQueue.cpp 中的CLQ_IsEmpty、CLQ_Length、CLQ_In和CLQ_Out四个操…

论文阅读和复现:去除PPG运动伪影的IEEE论文

论文阅读和代码复现&#xff1a; 《Combining Nonlinear Adaptive Filtering and Signal Decomposition for Motion Artifact Removal in Wearable Photoplethysmography》 基本介绍&#xff1a; 由于手腕运动造成的噪声&#xff1a;运动伪影&#xff0c;使得PPG方法的心率监…

shell-流程控制之条件判断

1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 补充&#xff1a;20G20971520kb [rootcotenos day06]# pwd /root/shell/day06 [rootcotenos day06]# vim free_men.sh #!/bin/bash f…

spring boot启动环境的配置与更改(dev,local,pro)包含单元测试环境

文件类型介绍 properties 该文件是一种key-value的格式&#xff0c;配置文件的特点是&#xff0c;它的Key-Value一般都是String-String类型的&#xff0c;因此我们完全可以用Map<String, String>来表示它。 用Properties读取配置文件非常简单。Java默认配置文件以.pro…

elasticsearch 7.9.3知识归纳整理(二)之es基本原理及使用kibana操作es的常见命令

es基本原理及使用kibana操作es的常见命令 一、es的基本原理与基础概念 1.1 倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值&#xff0c;而是由属性值来确定记录…

【机器学习】机器学习中常用的损失函数一览

问题 机器学习中常用的损失函数总结 前言 我们经常听到损失函数、代价函数和目标函数这三种说法&#xff0c;这三种说法有什么联系和区别呢&#xff1f;这里明确下&#xff1a; 损失函数 Loss Function 通常是针对单个训练样本而言的&#xff0c;给定一个模型输出 y^\hat{y…

设计模式 - UML类图

1. 什么是 UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统图形化、能表达软件设计中的动态与静态信息。L从目标系统的不同角度出发&#xff0c;定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图部署…

8种数据结构

快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外&#xff0c;数据结构属于计算…

【回答问题】ChatGPT上线了!有哪些3D点云算法模型?3D点云算法模型实现代码?

有哪些3D点云算法模型&#xff1f; 3D点云算法的模型有很多种&#xff0c;以下是一些常见的算法模型&#xff1a; 归一化重心法&#xff08;Normalized point-to-point ICP&#xff09;&#xff1a;是一种常用的模型配准方法&#xff0c;用于将两个模型中的点匹配起来。 基于…

跨年晚会前夕,曹云金和前妻复合了

每到跨年晚会的时候&#xff0c;总会有大的新闻事件发生&#xff0c;比如说在今年跨年晚会前夕&#xff0c;主持人何炅的老父亲&#xff0c;就非常不幸地驾鹤西去了。话说主持人何炅&#xff0c;在父亲离开后坚强地主持节目&#xff0c;他泪眼婆娑的表情&#xff0c;也登上了各…

电子游戏销售之回归模型与数据可视化

电子游戏销售之回归模型与数据可视化 文章目录电子游戏销售之回归模型与数据可视化0、写在前面1、回归模型1.1 模型建立准备1.2 建立模型1.3 模型分析2、数据可视化3、参考资料0、写在前面 该篇文章的任务包括以下3个方面 检测与处理缺失值建立回归模型数据可视化 实验环境 Pyt…