首页 > 其他分享 >Form表单的基本使用

Form表单的基本使用

时间:2023-12-05 17:11:56浏览次数:37  
标签:基本 function Form URL 表单 提交 action 数据

原文链接:https://blog.csdn.net/weixin_52851967/article/details/128523174

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

2、表单的组成部分

表单由三个基本部分组成:表单标签、表单域、表单按钮

表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。

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

 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)如何解决表单同步提交的缺点

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

页面会发生跳转
页面之前的状态和数据会丢失
解决方案:表单只负责采集数据,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 属性!

标签:基本,function,Form,URL,表单,提交,action,数据
From: https://www.cnblogs.com/Dongmy/p/17876874.html

相关文章

  • 文件的基本操作
    文件的基本操作1.操作文件打开的两种方式#1.文件的操作方式一:#讲文件以指定编码格式打开,讲文件句柄赋值给变量fpfp=open('01.txt','w',encoding='utf-8')#把hello写入文件fp.write("hello")#关闭文件fp.close()2.文件的操作方式二:#Python解释器内置了一个文......
  • 文件操作的基本流程
    文件操作的基本流程1.基本流程有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程#1.打开文件,由应用程序向操作系统发起系统调用open(...),操作系统打开该文件,对应一块硬盘空间,并返回一个文件对象赋值给一个变量ff=open('a.txt','r',encoding='utf-8'......
  • Quartz核心原理之架构及基本元素介绍
    1什么是QuartzQuartz是一个作业调度框架,它可以与J2EE和J2SE应用相结合,也可以单独使用。它能够创建多个甚至数万个jobs这样复杂的程序,jobs可以做成标准的java组件或EJBS。Quartz很容易上手,创建一个任务仅需实现Job接口,该接口只有一个方法voidexecute(JobExecutionContextcontex......
  • MySQL基本操作
    //mysql数据库管理工具简称叫数据库(存放数据,作为动态网站开不可缺少的一环)mysql是一种关系型数据库基本语法:1.查询当前MySQL下有的所有数据库showdatabases;2.创建数据库createdatabase数据库名数据库选项(字符集,校对集)(大部分情况我们都不进行数据选项的设置)......
  • Multi-view Information Integration and Propagation for Occluded Person Re-identi
     这篇从多视角这个思路出发,提出多视图信息集成模块,包括定位、量化和集成。给定具有相同身份的多个图像,MVI2P:i)定位特征图中的空间辨别区域以过滤掉噪声信息。ii)量化不同图像的显着性信息的相对重要性。iii)通过执行逐元素加法来集成多视图信息。iv)通过知识蒸馏将多个图像隐......
  • Quartz核心原理之架构及基本元素介绍 | 京东物流技术团队
    1什么是QuartzQuartz是一个作业调度框架,它可以与J2EE和J2SE应用相结合,也可以单独使用。它能够创建多个甚至数万个jobs这样复杂的程序,jobs可以做成标准的java组件或EJBS。Quartz很容易上手,创建一个任务仅需实现Job接口,该接口只有一个方法voidexecute(JobExecutionContextcontext)......
  • 基于element-plus实现表单校验
    官网https://element-plus.org/zh-CN/component/form.html#自定义校验规则需求在日常开发中,我们需要对表单的内容进行校验,确保用户输入的符合我们正常的业务,并赋予正确的提示,以登录注册举例:功能需求说明:注册功能(校验+注册)当用户输入用户名移开文本框后,也就是失去焦点时,需......
  • Power BI Report Server自定义Form登录
    一、条件1、windowsserver主机一台,我是windowsserver2019(当然windows10或者10月份5日更新的windows11也是可以行的)。 2、SQLSever,我用的是SQLServer2019。3、PowerBIReportServer默认位置安装(默认位置:C:\ProgramFiles\MicrosoftPowerBIReportServer)。......
  • Java基本数据类型、包装类及拆装箱详解
    Java的基本数据类型和对应的包装类是Java语言中处理数据的两个关键概念。基本数据类型提供了简单而高效的方式来存储数据,而包装类使得基本数据类型具有对象的特性。本文将深入探讨基本数据类型与包装类的应用场景及详细描述,并对自动拆箱和装箱的源码实现进行分析。基本数据类型与......
  • MySQL系列之读写分离架构——Atlas介绍、安装配置、Atlas功能测试、生产用户要求、Atl
    文章目录1.Atlas介绍2.安装配置3.Atlas功能测试4.生产用户要求5.Atlas基本管理6.自动分表7.关于读写分离建议1.Atlas介绍Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy0.8.2版本的基础上,对其......