如何防止两个下拉框提交相同的值

How Do I Prevent Two Drop Down Boxes From Submitting The Same Value

提问人:RLA2 提问时间:11/17/2023 更新时间:11/17/2023 访问量:18

问:

我的 Python 脚本将两个值提交到另一个脚本。这些值位于两个下拉列表中,这些下拉列表具有从列表表中读取的完全相同的值(它们是团队名称)。如果选择同一个团队,我会得到可预测的错误。

我显然可以在后端编写一些代码,但我更愿意在提交值之前通过表单本身来捕获它。

您可以在此处查看实时应用程序。任何人都可以提供任何帮助,我们将不胜感激。

https://statsim.pythonanywhere.com/

还没有尝试过任何东西,我相信应用于表单的一些JS会解决这个问题。

JavaScript Python 表单 验证

评论

0赞 mykaf 11/17/2023
在两者中选择同一团队的“可预测错误”是什么?您应该在此处包含一个最小的可重现示例,以便我们能够找到问题的核心,而不是费力地浏览您的所有代码。
1赞 Robert 11/17/2023
欢迎来到 stackoverflow。请不要链接到您的网站并告诉我们进行调试。链接可能会中断,或者链接的内容可能会更改,从而使该问题无法用于其他有类似问题的其他人。在问题中包括此处的 rleevant 代码,作为格式化文本,作为最小的可重现示例。StackOverflow 不是一个免费的代码编写服务,所以先尝试解决问题,并包括你的尝试以及它们如何没有成功。请参阅如何提问

答:

0赞 Moob 11/17/2023 #1

所以A队不能自己玩?您可以创建类似于以下内容的脚本:

const selects = document.querySelectorAll('select');
selects.forEach((select) => {
  select.addEventListener('change', onchange);
});

function onchange(e) {
  let n = this.name;
  let v = e.target.value;
  //enable all:
  document.querySelectorAll("select:not([name='" + n + "']) option").forEach((opt) => {opt.disabled = false;});
  //disable the selected
  if (v != "") {
    document.querySelector("select:not([name='" + n + "']) option[value='" + v + "']").disabled = true;
  }
};
<select name="home">
  <option value="">Home...</option>
  <option value="a">A</option>
  <option value="b">B</option>
  <option value="c">C</option>
</select>
v
<select name="away">
  <option value="">Away...</option>
  <option value="a">A</option>
  <option value="b">B</option>
  <option value="c">C</option>
</select>

评论

0赞 RLA2 11/17/2023
没错,一支球队不能自己玩。哦,伙计,这看起来是个好主意,它只是变灰了。Lemme 现在就尝试合并它!