当前位置: 首页 > 知识库问答 >
问题:

更改提交时的下拉列表不执行php代码

华宣
2023-03-14

我有一张表格

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 

表单有多个输入类型文本和一个下拉菜单。

我还有一个名为(submit1)的提交按钮

<input class="submit-button" type="submit" name="submit1" value="UPDATE MY INFORMATION" />

我的PHP读起来是这样的:

if (isset($_POST['submit1'])) 
{ .... }

如果我按下按钮,它就工作了,没问题。

但我也想从下拉菜单中提交表格更改。。。因此,它可以通过按下按钮或更改下拉列表来执行。。。所以我的下拉列表如下

<select name="country"  onchange="this.form.submit()">

当我选择我的下拉列表时,页面刷新,但是PHP中的代码没有执行。。。我想这和$u POST['submit1']的名字有关。。。

如何更改onchange=“this.form.submit(),使其在if(isset($\u POST['submit1'))中执行代码。。。

非常感谢。

共有3个答案

羊昊苍
2023-03-14

检查isset($_POST['国家'])并在更改时将其添加到下拉列表中,

onchange= 'document.getElementsByName("submit1")[0].click();'
瞿子濯
2023-03-14

您只需文档即可。getElementById('submit1')。将submit按钮上的id设置为与其名称相同后,单击()。当然,您也可以在更改时执行此操作。我会将我的JavaScript与HTML分开,这样它就会缓存到浏览器内存中。除了单选按钮和可能的复选框外,为您的输入、选择等提供与其名称相同的id

让我们从一些常见的开始。js

//<![CDATA[
var doc = document, bod = doc.body;
var IE = parseFloat(navigator.appVersion.split('MSIE')[1]);
bod.className = 'js';
function gteIE(version, className){
  if(IE >= version)bod.className = className;
}
function E(e){
  return doc.getElementById(e);
}
//]]>

现在进入其他页面。php

//<![CDATA[
var cntry = E('country'), sub1 = E('submit1');
cntry.onchange = function(){
  sub1.click();
}
// note that the format E('submit1').click(); would also work
//]]>

当然,你应该有:

  <script type='text/javascript' src='common.js'></script>
  <script type='text/javascript' src='otherpage.js'></script>
</body>
</html>

史经业
2023-03-14

您应该避免这样的内联javascript。它很难看,并且降低了可读性。更简单的方法是为元素提供ID,如下所示:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" id="myForm"> 

但是如果您不想,可以使用QuerySelector获取输入的name属性。

var x = document.querySelector("[name='country']");
x.addEventListener("change",function() {
    this.parentNode.submit(); //get form parent and submit
});

我有点困惑,为什么还要检查submit按钮的值,您不想:

if (isset($_POST['country'])) { ... }

相反?

 类似资料:
  • 问题内容: 我正在JSP中创建一个页面,其中有一个下拉列表,一旦用户选择了一个值,他就必须单击go按钮,然后将该值发送到Servlet。 我该如何做才能在变更时做到呢?例如,当用户选择John时,将从数据库中检索出他的所有详细信息并显示出来。我希望系统无需单击“执行”按钮即可执行此操作。 问题答案: 只需询问JavaScript的帮助。

  • 我正试图用Plotly编写散点图,并使其具有交互式trhough Dash回调,问题是当我更改下拉列表时,我的图形没有更新。数据结构如下所示: 报告修订周期202002年第29/02/2020号第16793 3 202001年第31/01/2020号第18933 1 202101年第31/01/2021 6246 132 202001年第17/01/2020 13 1号第

  • 是的,所以我不知道我在做什么。哈。 我想改变select2的未打开的下拉菜单的颜色(也许还有边上的按钮),但是寻找解决方案只是设法阻碍了我 这样可以更改选项(这很好!)但并不是我想要的100%。 有没有改变下拉初始状态颜色的类

  • 问题内容: 我有一个列表框,我想减小其宽度。 这是我的代码: 此代码在IE 6上有效,但在Mozilla Firefox(最新版本)中无效。有人可以告诉我如何减少Firefox上的下拉列表吗? 问题答案: 试试这个代码: CSS: 如果要更改选项的宽度,可以在CSS中执行以下操作: 也许您的CSS规则中有一个冲突,该冲突覆盖了您选择的宽度

  • 问题内容: 我有一个包含单个字母值列表的可编辑文件。因此,组合框非常小。 每个字母都有特殊的含义,在很少使用的字母的情况下,有时对用户来说并不清楚。因此,我创建了一个自定义,该自定义显示了下拉列表中每个字母的含义。 不幸的是,此解释不适合下拉菜单,因为它太小了,因为它的宽度与组合框相同。 有什么方法可以使下拉列表比组合框更宽? 这是我要实现的目标: 我无法更改组合框的宽度,因为该应用程序是对旧的旧

  • 问题内容: 我有一个下拉列表,列出了字体系列。像Tahoma,Arial,Verdana等。我想根据其代表的值更改每个下拉项的字体系列。就像Photoshop一样。 我更改了每个下拉项的CSS,但仅适用于FireFox。它不能在任何其他浏览器上使用。 我不想使用任何jQuery插件。 问题答案: 这是因为子元素()并非真正可样式化,而Firefox似乎是唯一忽略规范那部分的浏览器。 解决方法是将您