我正在创建一个调查。出于我的目的,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/