Javascript 带有下拉菜单的html表单提交按钮上的提交表单

Javascript 带有下拉菜单的html表单提交按钮上的提交表单,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在尝试创建一个表单。我希望我的客户能够将文本输入到文本字段中,然后从下拉列表中选择一个项目,该下拉列表是根据数据库查询构建的,该查询将其转换为json,然后在下拉列表中显示json的选定值。 我附上了一张图片,希望能更好地解释。 我不确定你在等什么,但既然你不回答 如果要阻止此操作:event.preventDefault() event.preventDefault()就像一个创可贴。它防止了默认行为。但是,在您的代码中,没有任何内容表明在单击按钮时应提交表单,因此不应提交表单。 我猜您使

我正在尝试创建一个表单。我希望我的客户能够将文本输入到文本字段中,然后从下拉列表中选择一个项目,该下拉列表是根据数据库查询构建的,该查询将其转换为json,然后在下拉列表中显示json的选定值。 我附上了一张图片,希望能更好地解释。
我不确定你在等什么,但既然你不回答

如果要阻止此操作:
event.preventDefault()

event.preventDefault()就像一个创可贴。它防止了默认行为。但是,在您的代码中,没有任何内容表明在单击按钮时应提交表单,因此不应提交表单。
我猜您使用的不是按钮,而是提交按钮

在任何情况下,您都可以在提交之前使用onsubmit进行检查:

onsubmit="validateMyForm()"
并防止在某些条件不满足时出现默认行为


你说这些链接在这里是一个占位符。在读这篇文章之前,这让我很困惑,所以我不得不再次编辑我的答案。下次请使用一些更不相关的东西,比如span或div

是的,您可以在此下拉列表中输入,以回答您的评论


Secundo,你有多个下拉列表吗

window.onclick = function(event) {
  if (!event.target.matches('.dropbtn')) {

    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
}
window.onclick=函数(事件){
如果(!event.target.matches('.dropbtn')){
var dropdowns=document.getElementsByClassName(“下拉内容”);
var i;
对于(i=0;i
这部分将通过下拉类循环所有元素,而您只有一个元素,那么为什么要循环呢?可能您有多个下拉列表,因此单击页面上的任何其他位置将关闭所有下拉列表

如果(!event.target.matches('.dropbtn'))

那和什么匹配?按钮。因此,单击按钮以外的任何位置都将关闭下拉列表。但是,当您单击所述下拉列表的项目时,是否要关闭下拉列表


我想用这个向你传达的是,你试图创造的用户体验似乎存在缺陷

进一步阅读:


下拉列表是链接。你能澄清一下吗?将event.preventDefault()添加到window.onclick以阻止postHi gmdev86,下拉列表不会是链接。我从一个数据库中得到两个值,但只显示其中一个值,目的是使用另一个值,这是以后提取数据所特有的。太棒了,谢谢。这会将下拉列表变成可以发送到php页面的数据吗?或者我必须更改列表的显示方式。@ChrisField否。您使用了表单数据的链接。这是错误的。我将编辑我的回答抱歉造成混乱,我在这方面完全是新手。我正在创建的表单包含两个字段,一个是文本字段,由用户填写,第二个是下拉列表,将向他们显示一个描述,“如A4、A3、A2、A1、A0”,然后他们将单击其中一个下拉列表。此表单将允许他们多次重复此过程,然后当他们准备好时,他们将单击submit按钮,然后将所有这些信息传递到php页面,该页面将从数据库检索所有信息,并将这些信息转化为我工作流中另一个过程的有用信息。