表单的子元素可不在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表单.包含复选框.单选框.输入框.下拉选择框等元素以及省市区三级联动.时间选择.日期选择.颜色选择.树型.文件/图片上传等功能. 详 ...
随机推荐
- KingbaseES 与 Oracle 用户口令管理与资源管理
一.概述 KingbaseES可以对用户口令与用户占用资源进行必要的管理.其管理方式,在这里与Oracle数据库进行参考比较. KingbaseES 使用扩展插件建立的系统参数,这组参数可以对数据库资 ...
- KingbaseES 数据库静默安装
关键字:KingbaseES.V8R6.Silent.Java 一.环境准备 1.硬件环境支持 金仓数据库管理系统KingbaseES支持X86.X86_64,同时支持龙芯.飞腾等国产CPU硬件体系结 ...
- centos7部署Prometheus+Grafana
一.安装Prometheus Server 请从 Prometheus 官方下载 linux 版的二进制压缩包.注意在下载前要选择操作系统为 linux. 执行下面的命令把 prometheus se ...
- 基于 Gitea 服务端渲染的 Jupyter Notebooks
本指南将向您展示如何通过配置外部渲染器来使 Gitea 呈现 Jupyter Notebooks.当然,你还可以根据本指南来为你的 Gitea 实例配置其他类型的文档渲染器,甚至是二进制文件!相信Gi ...
- ASP.NET MVC 对于视图引擎的优化
我经常使用asp.net MVC框架来做网站.总的来说,MVC框架是一个非常优秀的框架.相对于曾经的web form模式,我个人感觉分工更加合理思路也更加清晰,但是交给开发人员的工作也相对变多了. 当 ...
- SQL语句中过滤条件放在on、where、having的区别和联系
摘要:SQL语句中,过滤条件放在不同筛选器on.where和having的区别和联系. 综述 在<SQL语句中过滤条件放在on和where子句中的区别和联系>中,介绍了多表关联SQL语 ...
- thinkphp5.1 cookie跨域、thinkphp5.1 session跨域、tp5.1cookie跨域
cookie跨域: //config/cookie.php return [ //... //仅7.3.0及以上适用 'samesite' => 'None', //是否加密cookie值,fa ...
- Idea插件SequenceDiagram快速查看方法调用
Idea打开setting->plugins安装插件SequenceDiagram 快速查看方法调用 在方法名上右键点击SequenceDiagram即可生成方法调用图 最上面一行为该方法涉及的 ...
- 路径参数:Path Parameters
官方文档地址:https://fastapi.tiangolo.com/zh/tutorial/path-params/ # -*- coding: UTF-8 -*- from fastapi im ...
- 使用Prometheus和Grafana监控emqx集群
以 Prometheus为例: emqx_prometheus 支持将数据推送至 Pushgateway 中,然后再由 Promethues Server 拉取进行存储. 注意:emqx_promet ...