jquery - 为什么 jQuery option:selected 在未选择任何内容时返回第一个选项
问题描述
当我alert($("select").find("option:selected").val());
在没有选择选项的选择上使用时,jQuery 会提醒选择中第一个元素的值。
为什么会这样,我如何获得我的预期回报值''
或什至undefined
?
链接到小提琴:jsfiddle
alert($(".select").find("option:selected").val());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="select">
<option value="1">Test 1</option>
<option value="2">Test 2</option>
<option value="3">Test 3</option>
<option value="4">Test 4</option>
<option value="5">Test 5</option>
</select>
解决方案
这是个好问题。查了一下源码,好像jQuery会返回selectedIndex下的值,下面两种情况都是0
我的建议是有一个没有价值的“请选择”——你可以禁用它,这样它就不会被发送到服务器。
That also means your select will trigger onchange when the first actual value is selected AND HTML5 validation will make a required
work
console.log($(".select1 option:selected").val(),
$(".select2 option:selected").val());
console.log($(".select1")[0].selectedIndex,
$(".select2")[0].selectedIndex);
$(".select1 option").each(sel => console.log(sel.defaultSelected) )
$(".select2 option").each(sel => console.log(sel.defaultSelected) )
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="select1">
<option value="1">Test 1</option>
<option value="2">Test 2</option>
<option value="3">Test 3</option>
<option value="4">Test 4</option>
<option value="5">Test 5</option>
</select>
<select class="select2">
<option value="">Please select</option>
<option value="1">Test 1</option>
<option value="2">Test 2</option>
<option value="3">Test 3</option>
<option value="4">Test 4</option>
<option value="5">Test 5</option>
</select>
推荐阅读
- image - 带有缩放/鼠标滚动和箭头的 Tkinter Scrollabe 窗口
- c++ - WinSock 非阻塞 I/O
- c# - 将 .Net Core 项目从 3.1 降级到 2.2 - 找不到类型或命名空间名称“IWebHostEnvironment”
- javascript - 访问相对 URL 上的锚点
- java - 当我在 Android Studio 中创建新项目时,color.xml 文件和其他一些 xml 文件中有一些奇怪的代码
- jupyter - Jupyter Notebook 或 Lab 是否有通过 Web 暴露数据的风险?
- java - 扫描仪有问题
- java - 数组如何接受字符作为索引值?你能解释一下下面的逻辑吗
- flutter - 为什么flutter SDK提示错误的属性,Container应该使用Alignment类型但提示AlignmentGeometry?
- python - 如何在pytorch中同时运行多个分支?