表单隐藏域与display:none

有时候前端进行表单填写是分步骤的,每一步的时候其他步骤相关的表单视图不可见;

针对"不可见",以下有两种处理方式:

①display:none

这种方式呢,比较简单,就是将三个步骤分3个div,事件触发相关视图的显示与隐藏;

②定位

这和轮播图的实现原理相同,三个步骤div作为行内块状元素,在一行排列,总宽度为width,并用一个大div包住,

称为wrapB;然后再在外面用wrapA包住;

wrapA(position:relative;overflow:hidden;)

wrapB(position:absolute;left:0px;)

然后点击事件,改变wrapB的left值(每次改变width/3)来实现步骤的切换。

对于两种方法的处理,我之前一直以为display:none之后,提交表单之后,对应的表单域获取不了值,因为

display:none了啊,今天项目上的一个问题,使得我回家做了一次实验来验证:到底display:none的表单域

能不能获取?

HTML:

<body>
    <form id="form" action="http://localhost/index.php?c=api&m=demo" method="post">
        <div class="none">
            姓名:<input name="data[name]" type="text"></br>
            年龄:<input name="data[age]" type="text"></br>
        </div>
        性别:<input name="data[gender]" type="text"></br>
        学历:<input name = "data[education]" type="text"></br>
        <button type="button" onclick="check()" style="width:6rem;height:2rem;">测试隐藏</button>
        <button type="submit" style="width:6rem;height:2rem;">提交表单</button>
    </form>

    <script>
        function check(){
            $(".none").hide();
            var data = $("#form").serializeArray();
            console.log(data);
        }
    </script>
</body>

前台页面:

点击隐藏:

接口代码:

public function demo(){
        exit(json_encode($_POST[‘data‘]));
}

点击提交表单:

SO,事实证明,display:none后的表单域依旧可以传值,就和type="hidden"一样。

原文地址:https://www.cnblogs.com/eco-just/p/9643887.html

时间: 2024-10-09 18:52:11

表单隐藏域与display:none的相关文章

表单隐藏域有什么作用?

隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上.  代码格式:<input type="hidden" name="..." value="..."> 属性解释: type="hidden"定义隐藏域: name属性定义隐藏域的名称,要保证数据的准确采集,必须定义一个独一无二的名称: value属性定义隐藏域的值

表单隐藏域

隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上. 代码格式:<input type="hidden" name="..." value="..."> 属性解释:type="hidden"定义隐藏域:name属性定义隐藏域的名称,要保证数据的准确采集,必须定义一个独一无二的名称:value属性定义隐藏域的值例如:&

jquery.validate 使用--验证表单隐藏域

jQuery validate很不错的一个jQuery表单验证插件.升级到了1.9版的后,发现隐藏表单域验证全部失效,特别是在jquery.ui.tabs.min.js构造的Tabs里的验证. 是因为在1.9的changelog里有这么一句 changelog里 * Fixed #189 - :hidden elements are now ignored by default ignore: ":hidden", 解决办法: $(document).ready(function() 

正则表达过滤表单隐藏元素,组装post数据

<form name="form1" action="'.$serverUrl.'" method="post" > <input type="hidden" name="id" value="'.htmlentities($id).'" /> <input type="hidden" name="username"

获取表单select域的选择部分的文本

1 body> 2 <form action="index.php"> 3 <select name="" id="select"> 4 <option value="1">一</option> 5 <option value="2">二</option> 6 <option value="3">三

避免url传值字符串sjstr过长,使用from表单【隐藏域】post提交

1.普通的url传值<html--------------- <!-- 隐藏域post提交url --> <form id="urlPost" action="${pageContext.request.contextPath}/iwell.disposition.sgt_1.0/newallsgtData.action" method="post"> <input type="hidden"

[PHP]防止表单重复提交的几种方法

--------------------------------------------------------------------------------------------------- 1. 使用JS让按钮在点击一次后禁用(disable).=> 防止多次点击发生,实现方式较简单. 缺点:若客户端禁止JavaScript脚本,则失效. 2. 在提交成功后执行页面重定向(redirect).=> 转到提交成功信息页面. 特点:避免F5重复提交,消除浏览器前进和后退按导致的同样问题.

form表单重复提交问题

导致表单重复提交的原因是:第一次提交的表单会被缓存到内存中,直到页面下次提交或页面关闭或转向其他页面时才消失.在自调用返回时,内存中的数据依然在,这时页面中的判断提交的代码依然可以检测到提交的值,顾会产生重复提交的效果. 解决方法 Ⅰ重定向,页面提交后转到另一个页面而不是本页面 Ⅱ提交表单后提交按钮变灰/隐藏提交按钮 Ⅲ增加令牌token 访问页面前产生token public void toStart(HttpServletRequest req, HttpServletResponse re

如何防止重复提交表单?

防止重复提交表单的方法有很多,包括数据库判断,js验证,cookies验证及session验证等,具体使用方法如下: 使用JS让按钮在点击一次后禁用(disable).采用这种方法可以防止多次点击的发生,实现方式较简单. 缺点是若客户端禁止JavaScript脚本,则失效. 在提交成功后执行页面重定向(redirect).转到提交成功信息页面. 特点:避免F5重复提交,消除浏览器前进和后退按钮可导致的同样问题. 表单隐藏域中存放session(表单被请求时生成的标记).采用此方法在接收表单数据后