javascript - 单选按钮默认值不一致

标签 javascript jquery html

我正在创建一个调查。出于我的目的,JS 验证很好,我想确保选中每个组中的单选按钮。默认情况下,没有单选按钮被选中。据我了解,用户代理会自动将值设置为该组中的第一个单选按钮值。 例如:

<input type="radio" name="question_1" value="1">
<input type="radio" name="question_1" value="2">
<input type="radio" name="question_1" value="3">

虽然没有预先选择(视觉上)我可以检查这个组的值:

$('input[name="question_1"]').val();

这将返回“1”,第一个单选按钮的值。这让我很难看到一个没有值(value)的“群体”。

现在这里变得很奇怪。当我准备好将数据发布到我的 php 脚本时,我从这样的表单中获取它:

$(pagesArray[currentPage]).children('form').serialize();

这很好地获取了我所有的表单数据,但是没有为没有选中按钮的单选按钮组返回值。为什么在未选中任何内容时我没有获取组中第一个按钮的值?

最佳答案

$('input[name="question_1"]').val();

想想这是做什么的。它选择与选择器匹配的所有元素。这是所有三个要素。然后它调用 val 方法,该方法获取第一个的 value 属性。 (当您在选择中有多个元素时,返回第一个的值。)检查哪个(如果有)元素是无关紧要的:未选择的元素仍然有一个 value 属性集。

$(pagesArray[currentPage]).children('form').serialize();

然而,这有非常不同的逻辑。它查看浏览器将向服务器发送哪些字段。由于未发送未经检查的 radio 字段,因此它们未被序列化。

所以引用你的问题:

the user agent automatically sets the value to the first radio buttons value in that group

这是错误的。没有一个具有值集的全局 input[name="question_1"] 元素。有多个元素(没有一个被选中),您只是获得第一个的值。

关于javascript - 单选按钮默认值不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641147/

相关文章:

javascript - Jquery 无法调用单击,但可以使用鼠标手动执行单击

css - 高度相对于宽度的多个垂直 div

html 2 div容器定位

javascript - Chrome 扩展程序被 Etsy 屏蔽了?

javascript - ThreeJS 绕轴旋转

javascript - 不同设备的独立javascript

javascript - Angular 1.4.2 注入(inject) $cookies 不起作用

javascript - 无法使用 Knockoutjs 从可观察数组中删除项目

jquery - CSS - 在响应状态下从右向左推菜单

javascript - 为什么过渡不适用于边界属性?