当前位置: 首页 > 知识库问答 >
问题:

当尝试获取所有选定的输入时,输入类型无线电数据值仅显示1

翟京
2023-03-14

我正在尝试为自己做一个测验,我想要选定的单选按钮的数据值。在我解释这个问题之前,让我先告诉你发生了什么:

正如你所看到的,它只显示了我选择的第一个anwer。但我想要所有选定的答案。以及它们的数据值。所以我可以将它们作为数组或对象发送到php文件中。

这是我的代码:

let frm = $('#form');

    $('input[value="finished"]').on('click', function (e) {
        e.preventDefault();

        console.log($('input[type=radio]:checked').data('value'));

        $.ajax({
            type: frm.attr('method'),
            url: "ajax/quiz.php",
            data: frm.serialize(),
            success: function (data) {

            },
        }).done(function (data) {

        });
    });

有人知道为什么只显示一个吗?因为我搜索了一段时间,很多人推荐这个选项。

无法获取输入无线电选择值

我也尝试了这个:如何获得所选单选按钮的值?

但它仍然显示给我一个数据值。

共有2个答案

洪知
2023-03-14

你可以用很多方法做到这一点。我在回答中展示了两种错误的方式和两种正确的方式。

null

$(function() {
    let frm = $('#form');

    $('input[value="finished"]').on('click', function (e) {
        e.preventDefault();

        /*console.log($('input[type=radio]:checked').data('value'));

        $.ajax({
            type: frm.attr('method'),
            url: "ajax/quiz.php",
            data: frm.serialize(),
            success: function (data) {

            },
        }).done(function (data) {

        });*/
        let output = document.getElementById("output");
        let val = $('input[type=radio]:checked').val();
        let data = $('input[type=radio]:checked').data('value');
        let serialized = frm.serialize();
        let accumulated = [...document.querySelectorAll('input[type=radio]:checked')].map((item) => `${item.name}=${item.value}`).join("&");
        output.innerHTML += `<p>val(): ${val}</p>`;
        output.innerHTML += `<p>data('value'): ${data}</p>`;
        output.innerHTML += `<p>serialized: ${serialized}</p>`; //works
        output.innerHTML += `<p>accumulated: ${accumulated}</p>`; //works
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="form">
    <input type="radio" name="question1" value="answer1_1">
    <input type="radio" name="question1" value="answer1_2">
    <input type="radio" name="question2" value="answer2_1">
    <input type="radio" name="question2" value="answer2_2">
    <input type="submit" value="finished">
</form>

<div id="output"></div>
帅煌
2023-03-14

如果您坚持保存DataSet()中的值,您可以这样做:

const values = $('input[type=radio]:checked')
  .map(function() {
    return $(this).data('value')
  })
  .get();

现在,values是选定单选框中所有data-value值的数组。

有关jQuery映射的更多信息,请访问:https://api.jquery.com/map/

 类似资料:
  • 所以im生成的输入字段很少,这就起作用了。 但我无法获得这个生成的输入字段的值。我可以让onchange工作,但我还是抓不到任何值。 所以我用jQuery尝试了很多方法,但都不奏效。我没有被迷惑。 这是生成的字段 看起来就像 那也很管用。 但我无法获得该输入字段的id

  • 本文向大家介绍aurelia 绑定到无线电输入,包括了aurelia 绑定到无线电输入的使用技巧和注意事项,需要的朋友参考一下 示例 基本收音机 带对象阵列的收音机 带布尔的收音机            

  • 对于 被选中的国家 ,只显示 输入线 或者 输出线   只显示输入线   只显示输出线 controller.showInOnly(true); controller.showInOnly(false); controller.showOutOnly(true); controller.showOutOnly(false);

  • 问题内容: 浏览器仅在提交表单时选中复选框输入值数据,这是浏览器的标准行为吗? 如果未提供任何值数据,默认值是否始终为“ on”? 假设以上内容正确,那么在所有浏览器中这种行为是否一致? 问题答案: 是的,标准行为是仅在选中复选框后才发送值。通常,这意味着您需要记住在服务器端期望使用的复选框的方式,因为并非所有数据都从表单返回。 默认值始终为“ on”,这在所有浏览器中都应保持一致。 W3C HT

  • 问题内容: 我正在制作一个要使用范围滑块的网站(我知道它仅支持Webkit浏览器)。 我已经将其完全集成并且可以正常工作。但我想使用a 来显示当前的幻灯片值。 我的意思是,如果最初滑块的值为5,那么在文本框中它应显示为5,当我滑动文本框时,其值应更改。 我可以仅使用还是使用。我想避免。可能吗? 问题答案: 这使用javascript,而不直接使用jquery。它可能有助于您入门。

  • 我在测试新的Flink 1.0.0功能时遇到了一些问题。我一直在修补CEP,但还没有运行简单的演示代码: 代码编译良好,maven不显示任何警告。TraFFEvent是一个包含几个简单字段的类,stream是该类的Scala DataStream。当代码在Flink上运行时,错误会出现。它运行一秒钟,然后代码退出并显示此错误消息: 该程序以以下例外结束: 我试图通过构建这样一个静态类将功能移到Ja