我的项目中有一些自定义选择行为,这为选择框添加了一些常规功能。我已经实现了可以将它们标记为可选的功能,从而允许用户选择默认值,该值为空。
在自定义javascript代码中,它从来没有直接操纵过select的“ value”属性-它只是操纵了选项,添加或删除了选定的属性/属性。 这对于具有实际值的所有实物期权均能正常工作-它们会随其价值属性的值一起提交。
但是,当我选择默认选项时,它的值为空(value =“”),那么浏览器总是在表单提交时发送第一个选项的值。我不明白为什么。我什至可以用JavaScript确认这一点。
<select id="stockWay" data-select-name="selectBox" data-optional="" name="stockWay" data-placeholder=“please choose ..." class="hide">
<option value=“FOO”>FOO</option>
<option value=“BAR”>BAR</option>
<option value="" selected="selected">please choose ...</option
</select>
这是我选择的HTML在网站上的显示方式,即复制粘贴的内容。 当我调用此JavaScript时:
document.getElementById("stockWay").value
它返回“ FOO”。这对我来说毫无意义,明确选择了空值选项。并且即使该空值算作“丢失”,它也应根据文档使用其文本内容。我真的不明白这里发生了什么。我认为select元素的值属性反映了哪个option-children具有selected属性?显然还有更多的事情要做,但我不知道在什么地方,在什么地方以及如何做。
有人发现我可能还会去哪里寻找任何线索吗?任何指针将不胜感激。
编辑:我刚刚在chrome中对此进行了进一步调试,可以看到以下行为: 代码调用
selectedOption.setAttribute("selected", "selected");
每当选择一个选项时。对于所有具有实数值的选项,这将导致“选择”属性变为真。仅对于空值选项,由于某些原因并不能使其变为真。它只是保持错误。这实际上是一行代码。在这两种情况下,我都可以看到selectedOption是页面中的预期元素。我不明白。