在网页中form表单主要用来采集用户的数据,例如登录,筛选等 采集完毕后将信息发送给服务器端进行处理

表单的组成:

  • 表单域:form标签
  • 表单控件:即各种表单元素,例如文本框提交按钮等
  • 提示信息:即在每个控件前的信息,提示用户此控件操作的内容

form标签属性

表单标签通常由

标签包裹

action

表单的 action属性表示此表单将要提交的地址,这个属性的属性值为一个后端提供的URL地址,通过此地传输的表单信息交由后台进行处理
如果form表单没有添加action属性,即默认以当前页面地址传输数据

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


target

标签中,target的用法和表签类似,都是设置以何种方式来打开action URL
此属性有五个可选值,在没有添加此属性情况下,默认为_self,表示在当前页面打开action URL

  • _blank : 在新的空白页面打开
  • _self : 在当前页面打开
  • _parent :在父框架集中打开 (很少用)
  • _top :在整个窗口中打开 (很少用)
  • framename : 在指定的框架中打开(很少用)

method

  • 这个属性表示通过何种方式将数据提交到action URL
  • 此属性拥有两个可选值:
    1. - get:为默认情况,适合将少量且简单的数据提交到action URL
    2. - post:适合提交大量且复杂的数据,或者包含文件上传的数据

enctype

enctype属性用来规定在发送表单数据之前对数据进行如何编码
这个属性拥有三个可选值:

  1. - application/x-www-form-urlencoded默认为此属性,表示发送前编码所有祖字符
  2. - `multipart/form-data`:此属性值表示不对字符进行编码,当对文件进行上传时必须选择此属性值
  3. - `text/plain `:将空格符转换为”+“但不对特殊字符编码(仅仅只是对空格符进行转换)

表带同步提交及其缺点

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

表单同步提交的缺点

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

如何解决呢?
表单只复杂采集数据,Ajax负责将数据提交到服务器


通过Ajax提交表单数据

通过jQuery封装的Ajax函数来控制表单提交数据

监听表单提交事件

两种方式监听表单提交事件

  1. <form id="form1">
  2. <input type="submit" value="提交">
  3. </form>
  4. $('#form1').submit(function(){ //
  5. alert('监听到了表单的提交事件')
  6. })
  7. $('#form1').on('submit',funtion(){
  8. alert('监听到了表单的提交事件')
  9. })

阻止表单默认提交行为

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

  1. $('#form1').submit(function(e){
  2. //阻止表单提交和页面跳转
  3. e.preventDefault() //或者 return false 阻止默认事件
  4. })
  5. $('#form1').on('submit',funtion(e){
  6. e.preventDefault()
  7. })

快速获取表单数据

serialize()函数

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

  1. $(selector).serialize()

优点:可以一次性获取全部的表单数据

例子

  1. <form id="form1">
  2. <input type="text" name="username">
  3. <input type="password" name="password">
  4. <button type="submit">提交</button>
  5. </form>
  6. $("#form1").serialize()
  7. //调用结果
  8. //username=用户名的值&password=密码的值


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