Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提交带有POST的表单,有关复选框的信息不被张贴/提交。

提交带有POST的表单,有关复选框的信息不被张贴/提交。
EN

Stack Overflow用户
提问于 2017-01-01 07:33:44
回答 2查看 65关注 0票数 0

在下面的SSCCE中,我有三个名为StarksLannistersTargaryens的选项卡。然后,我有一个表单,其中包含一些复选框和一个标签为Save的按钮。在递交此表格时,我希望提交下列资料:

  1. 选定/活动选项卡的标题
  2. 选中/选中复选框的标签

对于2,我在表单中添加了<input type="checkbox" name="columnHeadersToDisplay" value="STRING-LABEL-OF-THIS-CHECKBOX" />元素。

对于1,我为JS中的Save按钮编写了一个单击处理程序,其中我在表单中附加了一个隐藏的 input字段,并给它一个活动的字符串标题-选项卡的值。

问题是,当我选中两个复选框,同时激活/打开Lannisters Save 选项卡,按下Save按钮(因此提交了表单),然后打印出获得的 $_POST**,的内容:*

Array ( [activeTabTitle] => Starks )

我需要什么,我期待什么(当我检查前两个复选框时)

Array ( [activeTabTitle] => Lannisters, [columnHeadersToDisplay] => Array ( [0] => Apes, [1] => Himalayas, [2] => Malaysia ) )

问题是,为什么我没有得到的标题-- active 选项卡,以及为什么没有张贴/提交有关复选框的任何信息?

我做错什么了?

代码语言:javascript
运行
AI代码解释
复制
<?php 
$columnNames = array('Apes', 'Himalayas', 'Malaysia', 'Asia', 'Britian', 'Austria', 'Norway', 'Greece', 'Thailand', 'Maldives');


if ( isset($_POST) ) {

    print_r($_POST);//check


} else {
    echo 'isset($_POST["columnHeadersToDisplay"]) returns false.';
}


?>

<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="material.min.css" />
<script type="text/javascript" src="material.min.js"></script>
<script src="jquery.min.js"></script>
<script src="scripts.js"></script>
</head>


<body>

<div class="mdl-layout mdl-js-layout">

<div class="mdl-tabs mdl-js-tabs">
    <div class="mdl-tabs__tab-bar">
        <a href="#starks-panel" class="mdl-tabs__tab is-active" id="starks-tab">Starks</a>
        <a href="#lannisters-panel" class="mdl-tabs__tab" id="lannisters-tab">Lannisters</a>
        <a href="#targaryens-panel" class="mdl-tabs__tab" id="targaryens-tab">Targaryens</a>
    </div>

    <div class="mdl-tabs__panel is-active" id="starks-panel" style="width:1000px; height:100px; background-color:wheat;">
        .
    </div>

    <div class="mdl-tabs__panel" id="lannisters-panel" style="width:1000px; height:100px; background-color:orange;">
        .
    </div>

    <div class="mdl-tabs__panel" id="targaryens-panel" style="width:1000px; height:100px; background-color:green;">
        .
    </div>
</div>

<form method="post" action="" id="chooseColumnsForm" >

<?php 
echo "<button type='button' id='submit-form-button' style='padding:15px;'>Save</button>";

foreach ($columnNames as $index=>$columnName) {
    echo "<div>
        <input type='checkbox' name='columnHeadersToDisplay[]' value='$columnName' />
        <label>$columnName</label>
    </div>";
}


?>

</form>

</div>

</body>
</html>

scripts.js:

代码语言:javascript
运行
AI代码解释
复制
$(document).ready(function() {

    $("#submit-form-button").click(function(event) {
        alert('$("#submit-form-button") clicked');//check
        //alert(  $("#chooseColumnsForm").html()  );//check

        var innerHTMLOfActiveTabAnchor = $(".mdl-tabs__tab, .is-active").html();

        $("#chooseColumnsForm").html(  "<input type='hidden' name='activeTabTitle' value='"+innerHTMLOfActiveTabAnchor+"' />" + $("#chooseColumnsForm").html()  );

        alert(  $("#chooseColumnsForm").html()  );//check

        $("#chooseColumnsForm").submit();

    });

});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-01 07:47:14

问题是选中状态没有存储在html中,而是dom元素的属性。

选中的属性不会通过用户交互更新,只用于浏览器在初始呈现过程中设置checked属性

其他属性(如valueselected )也是如此

使用append()prepend()只添加隐藏输入,而不是替换表单的整个内部html。

变化

代码语言:javascript
运行
AI代码解释
复制
$("#chooseColumnsForm").html('<input.....>'  + $("#chooseColumnsForm").html())

代码语言:javascript
运行
AI代码解释
复制
$("#chooseColumnsForm").append('<input.....>')

这将保留所有其他窗体元素的原样,而不会影响选中的属性(或其他类型控件的值)。

票数 1
EN

Stack Overflow用户

发布于 2017-01-01 07:57:33

若要访问选中的复选框值,请为“name”属性使用数组。就像这样:

代码语言:javascript
运行
AI代码解释
复制
<input type="checkbox" name="columnHeadersToDisplay[]" value="STRING-LABEL-OF-THIS-CHECKBOX" />

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41416582

复制
相关文章
node表单提交POST提交
前几天给大家介绍了使用node的提交(get)获取到表单提交的内容,get提交的参数查询部分(query)可以获得到,由于get提交的内容在url显示,而post提交处理机制,为了保障安全性不显示在url中,下面案例介绍下post提交案例!
十月梦想
2018/08/29
4.6K0
get和post表单提交
GET的提交方式,用户输入结果会显示在地址栏,安全性不好,地址栏提交数据大小限制2K。
十月梦想
2018/08/29
9830
get和post表单提交
js 模拟form表单post提交
场景: 需要提交数据,且数据处理后,会跳转页面。(注:数据提交需要post) 思路1: 1. 参考ajax提交数据,进行处理,处理成功后返回到客户端 2. 在客户端跳转页面 思路2: 使用form表格进行post提交 实现方法:需要创建一个form表格,且数据必须在form表格中,用Input表格元素存起来,效果如下:
用户9914333
2022/07/21
12.6K0
vue的form表单提交_axios提交表单
利用v-model能比较便捷地上传用户信息的数据,不用一个个参数地拼接。直接在data根据要传的字段定义一个对象,
全栈程序员站长
2022/11/10
7K0
form表单中带有文件上传,同时提交
前台JS(easyUI) function EditsubmitForm() { var father = $('#select_category').combobox('getValue'
唐怀瑟
2018/08/30
5.1K0
C#模拟POST表单提交 --- WebClient
WebClient:http://msdn.microsoft.com/zh-cn/library/system.net.webclient(v=VS.80).aspx(MSDN) 代码: string postString = "arg1=a&arg2=b";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来 byte[] postData = Encoding.UTF8.GetBytes(postString);//编码,尤其是汉字,事先要看下抓取
磊哥
2018/05/08
1.9K0
java表单提交方法_表单提交的几种方式[通俗易懂]
说明:用户提交按钮或图像按钮时,就会提交表单。使用或都可以定义提交按钮,只要将其特性的值设置为“submit”即可,而图像按钮则是通过的type特性值设置为”image”来定义的。因此,只要我们单击一下代码生成的按钮,就可以提交表单。
全栈程序员站长
2022/09/30
5.4K0
表单提交原理_防止表单重复提交
<form>标签的属性enctype设置以何种编码方式提交表单数据。可选的值有三个:
全栈程序员站长
2022/11/08
5.7K0
表单提交
在html中经常用到<form>标签。而我们在使用过程会经常这样用<input name=”sub” type=”submit” value=”提交” /> 也就是说当我们点击提交的时候会执行<form action=”file.php” method=”get” id=”se” name=”se”>action的动作(例子是提交到file.php页面)方法是get。 当没有提交按钮时而是用一个热图加onclick属性来完成,我们可以这样用 <form id=”search” name=”search”
苦咖啡
2018/05/07
4.7K0
form实现表单提交的各种方法(表单提交源码)
这种方法实际上是调用了一个javascript函数,使用javacript函数来提交表单,方法就非常多非常灵活了,比如可以把它加入到任意一个标签的onclick事件中:
全栈程序员站长
2022/08/01
5.9K0
js form表单提交(jsp form表单提交方式)
最近工作比较忙,着急上线,写个简单的东西吧 url为你要提交的地址 params 为你提交的参数
全栈程序员站长
2022/07/30
15.4K0
Java模拟表单post提交,可支持图片上传
/** * 模拟表单post * * @param textMap 文本域 * @param fileMap 文件 * */ public static String postForm(String urlStr, Map<String, String> textMap, Map<String, String> fileMap) throws IOException { String res = ""; HttpURLConnection conn = null; In
用户1503405
2021/09/23
1.3K0
html获取表单提交数据_提交表单的两种方法
转载于:https://blog.csdn.net/yongwoozzang/article/details/83029128
全栈程序员站长
2022/11/08
2.8K0
c#以POST方式模拟提交表单
这是我一年前写的一个用C#模拟以POST方式提交表单的代码,现在记录在下面,以免忘记咯。那时候刚学C#~忽忽。。很生疏。。代码看上去也很幼稚 臃肿不堪 #region 内容添加函数(Contentinsert)      public string Contentinsert(string bookID, string bookTitle, string bookContent,string taskUrl,string Ztagend)      {                 string uriS
庞小明
2018/03/29
2.3K0
异步提交表单_js异步提交表单并回调
所谓异步提交表单,就是不再使用表单的提交按钮实现表单的提交功能,而是通过Ajax异步交互方式实现表单提交。具体实现步骤如下:
全栈程序员站长
2022/11/17
12.2K0
异步提交表单_js异步提交表单并回调
jsp表单的批量提交
如果数据量不大可以这样直接提交,如果数据一旦超过几十条那么会造成页面卡顿,同时ie会提示“此脚本运行时间过长,是否终止”,一旦点击是,那么表单就无法直接提交了;
西门呀在吹雪
2020/11/09
1.5K0
jsp表单的批量提交
html表单提交
1、只能为input、textarea、select三类类型的标签。只有这些标签用户才可能修改值,<label>、<p>、<font>等标签仅供显示用,没有提交到服务器的必要。当input=submit的时候,只有被点击的按钮的value才会被提交;
tandaxia
2018/09/27
5.8K0
django表单提交
HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。
py3study
2018/08/03
4.2K0
回车提交表单
我们在页面开发中经常会写一些表单,但身为一个懒人,肯定是懒得点提交按钮的,我一般直接按回车提交
阿超
2022/08/17
4.3K0
点击加载更多

相似问题

PHP使用jQuery .post()提交带有多个提交按钮的表单

32

带有angularjs复选框的提交表单

11

提交带有ng的表单-提交和触发同步的post请求

33

使用AJAX提交带有POST/GET的表单

23

使用jQuery提交带有post vars的表单

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档