表单的子元素可不在form标签内
表单是网页用于向服务器发送数据的元素。其用法类似下面:
<form method="POST" action="/login">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" value="提交" />
</form>
form标签对及其内部的所有子元素共同组成了表单。提交表单时,浏览器会将form标签对内所有具有name属性的标签的键值提交给服务器。
令人惊奇的是,一个表单子元素可不在form标签内,但是却从属于一个表单。要让一个form标签外的表单子元素从属于某一表单,只需要将该表单子元素的form属性设置为该表单form元素的id。其用法类似下面:
<form id="login-form" method="POST" action="/login"></form>
<input form="login-form" type="text" name="username" />
<input form="login-form" type="password" name="password" />
<input form="login-form" type="submit" value="提交" />
当点击提交按钮时,浏览器会把所有从属于表单且具有name属性的标签的键值对提交给服务器,在上面这个例子里会向浏览器提交username和password键值对。需要说明的是,如果提交按钮也有name属性,那么提交按钮的值也会被提交给浏览器;如果在form标签对外有多个提交按钮,那么只有被点击的按钮的值会被提交给服务器,未被点击的按钮的值不会被提交给服务器。
“从属于表单的控件可不在form标签内”这一特性有两种妙用。
第一,将提交按钮与form标签分离,放在行内元素中。form元素是块元素,它需要单独占据一行,所以form不能位于行内元素内(虽然浏览器的容错能力很强,能容忍这种错误)。但有时确实有将提交按钮放在行内元素内的需求,例如点赞、点踩、收藏按钮等。这时可将提交按钮与form标签分离,并放在行内元素内。如下是一个示例。
<span id="evaluate-article-button">
<button form="praise-article" type="submit" name="operation" value="praise">赞</button>
<button form="criticize-article" type="submit" name="operation" value="criticize">踩</button>
<button form="collect-article" type="submit" name="operation" value="collect">收藏</button>
</span>
<div id="form">
<form id="praise-article" method="POST" action="/article/1"></form>
<form id="criticize-article" method="POST" action="/article/1"></form>
<form id="collect-article" method="POST" action="/article/1"></form>
</div>
第二,多个提交按钮共用一个form元素,减少代码量。可以发现,上例所示的form标签的内容都是相同的,所以点赞、点踩、收藏三个按钮可共用一个form元素。示例如下。
<span id="evaluate-article-button">
<button form="evaluate-article" type="submit" name="operation" value="praise">赞</button>
<button form="evaluate-article" type="submit" name="operation" value="criticize">踩</button>
<button form="evaluate-article" type="submit" name="operation" value="collect">收藏</button>
</span>
<div id="form">
<form id="evaluate-article" method="POST" action="/article/1"></form>
</div>
表单的子元素可不在form标签内的更多相关文章
- html5中form表单新增属性以及改良的input标签元素的种类
在HTML5中,表单新增了一些属性,input标签也有了更多的type类型,有些实现了js才能实现的特效,但目前有些浏览器不能全部支持.下面是一些h5在表单和input标签上的一些改动. <!D ...
- Ajax提交form表单内容和文件(jQuery.form.js)
jQuery官网是这样介绍form.js A simple way to AJAX-ify any form on your page; with file upload and progress s ...
- HTML表单之input元素的23种type类型
摘自:http://www.cnblogs.com/xiaohuochai/p/5179909.html 了解HTML表单之input元素的23种type类型 随着HTML5的出现,input元素新增 ...
- Django 11 form表单(状态保持session、form表单及注册实现)
Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...
- 如何disabled禁用所有表单input输入框元素
转载地址:https://www.zhangxinxu.com/wordpress/?p=8568 一.pointer-events:none和覆盖层方法的问题 经常会遇到需求,需要禁用div中或者f ...
- BPM不同表单之间子表的赋值
上次写的是同一个表单的子表之间赋值,这次是不同表单之间子表的赋值 首先,我们给需要赋值的表单添加一个复制按钮 $.MvcSheet.AddAction({ Action: &qu ...
- 第四篇 HTML 表单深入了解、注释和a标签的运用
表单深入了解.注释和a标签的运用 注释,HTML中的注释格式: 开头 <!-- 结束 --> 例子: <!-- <div>我被注释了</div> - ...
- jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元素过滤器(*),追加方法,节点,样式操作)
属性.表单过滤器 属性过滤选择器: $("div[id]")选取有id属性的<div> $("div[title=test]")选取title属性为 ...
- PHP表单生成器,快速生成现代化的form表单,快速上手
form-builder PHP表单生成器,快速生成现代化的form表单.包含复选框.单选框.输入框.下拉选择框等元素以及省市区三级联动.时间选择.日期选择.颜色选择.树型.文件/图片上传等功能. 详 ...
随机推荐
- Jenkins JNLP方式启动 Agent
Jenkins Server配置 如果你是通过Nginx代理了jenkins,那么需要调整下Nginx的配置 map $http_upgrade $connection_upgrade { defau ...
- KingbaseES 约束
目录 什么是约束 如何定义约束 列约束 表约束 为约束创建名称 默认约束名称 自定义约束名称 KingbaseES 的可用约束列表 CHECK约束 非空约束 UNIQUE约束 PRIMARY KEY约 ...
- spark 解决 java.util.Date is not a valid external type for schema of Date
出错伪代码如下: //出错的点在这里 import java.util.Date ... val t_rdd = t_frame.rdd.map(row => { val photo_url = ...
- Unity2D-Dash && SpeedUp
Introduction 原理: 角色位置改变时,每隔一段时间记录角色的位置,然后在记录的位置上放置一个图片,在图片出现之后过一段时间就让图片渐渐消失 简述实现步骤: 1.在Unity中Creat ...
- Markdown学习 .md学习
# Markdown学习## 标题## 二级标题### 三级标题#### 四级标题## 字体**两个*是粗体***一个是斜体****三个是斜体加粗***~~两个~是删除线~~## 引用>走向人生 ...
- 使用SSH连接Windows Server
之前发过一篇在Windows Server上启用SSH服务器的文章.最近正好有这个需求,需要使用密钥免密登录服务器,试了一下,发现之前的方法不行了.需要再修正一些文件权限. 需要使用Repair-Au ...
- 使用django_registration框架实现用户的注册与激活
1.前言 本节内容是在以下环境中实现的. python version: 3.7 Django version: 3.1.1 Django-registration version: 3.1.1 如版 ...
- 事件循环:微任务和宏任务在v8中实现的简单理解
微任务 在js中,当使用promise,会将当前任务加入事件执行的微任务队列,有且只有这一种方法可以,因为当使用了promise,在JS引擎中会触发VM::queueMicrotask,会向m_mic ...
- Django django-admin.py 命令详解
一.Django 基本命令 下载 Django pip3 install django # 默认下载最新版 pip3 install django==4.1 # 手动选择版本 创建Djang ...
- ELK 性能优化实践
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI5MTU1MzM3MQ==&mid=2247489814&idx=1&sn=6916f8b7 ...