【问题标题】:How to check the value of the currently selected option (using Javascript)如何检查当前选定选项的值(使用 Javascript)
【发布时间】:2022-01-28 16:30:24
【问题描述】:

我在查找当前选定选项的值时遇到问题。

这是我迄今为止尝试过的......

const status = document.getElementById("task-status");
let value = status.options[status.selectedIndex].value;
console.log(value);
<label for="task-status">Status</label>
<select class="form-control" id="task-status" required>
  <option selected disabled value="">Select status</option>
  <option value="to do">To Do</option>
  <option value="review">Review</option>
  <option value="in progress">In Progress</option>
  <option value="done">Done</option>
</select>

这不会在控制台上打印任何内容,也不知道为什么。

我最终要做的是检查用户选择的选项的值是否为“”(空) 如果是,则显示错误(选择无效)。 否则,如果用户选择的选项是 !"" (非空) 选择有效

值得注意的是,我正在使用 Bootstrap 及其表单。不确定这是否会产生影响。

我已经尝试了几个小时寻找解决方案,如果有人能提供帮助,我将不胜感激。谢谢

【问题讨论】:

  • 您的代码按原样工作,但所选选项的值是空字符串。如果在选择新选项时需要该值,则需要在 select 元素上监听 change event。
  • 哦,我明白了,让我看看,然后回复你。我确实对选择选项进行了硬编码,以便其中一个(不是默认选项)具有“选定”属性,并且仍然重新调整了一个空字符串。
  • Not reproducible,但这仅在页面加载时运行。

标签: javascript html forms twitter-bootstrap dom


【解决方案1】:

很简单var x = document.getElementById("task-status").value;,更多信息请访问https://www.w3schools.com/jsref/prop_select_value.asp

【讨论】:

  • 我也试过这个,但是总是返回一个空字符串。
  • 您尝试记录变量“status”以查看更多信息
  • 是的,我刚刚尝试过,它会按预期返回选择元素。
  • 控制台中被检查对象的 status.value 的值是多少?
【解决方案2】:

您可以创建和eventListener,以便在检测到下拉值更改时检查该值。

https://jsfiddle.net/hxo8a5dt/

const status = document.getElementById("task-status");
status.addEventListener("change", function(event){console.log(event.target.value)});

对于所有事件侦听器,事件会自动传递给您可以引用和检查值的函数。

还可以查看console.log(event) 并查看它拥有的所有其他好东西:)

【讨论】:

  • 不幸的是,这不会向控制台打印任何内容。我很困惑,因为我尝试过的一切似乎都没有返回当前选择的选项
  • 你会用你的代码创造一个小提琴吗?如果你检查我的小提琴,你会看到当你选择一个选项时会打印出这个值。
【解决方案3】:

通常您只需要使用value,但有时您想查找文本和值,因此.options.selectedIndex 提供了如下可能性。

const oSel=document.getElementById("task-status")

oSel.addEventListener('change',function(e){
  let value=this.value;
  let optval=oSel.options[oSel.options.selectedIndex].value;
  let opttext=oSel.options[oSel.options.selectedIndex].text;
  
  console.info('%s - %s - %s', value,optval,opttext);
});
<label for="task-status">Status</label>
<select class="form-control" id="task-status" required>
  <option selected disabled hidden>Select status
  <option value="to do">To Do!
  <option value="review">Review!
  <option value="in progress">In Progress!
  <option value="done">Done
</select>

【讨论】:

  • 感谢您花时间向我展示这个,我会尝试一下。我只做了几个星期的 JavaScript,所以我确信这是一个简单的修复,只是我还不太擅长调试和找到解决方案。当我尝试了您的解决方案后,我会回复您。我想我明白你在这里做了什么......
猜你喜欢
  • 1970-01-01
  • 2012-02-25
  • 2016-06-04
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多