无法获取复选框的值

Posted

技术标签:

【中文标题】无法获取复选框的值【英文标题】:Cannot get value of checkbox 【发布时间】:2018-07-30 01:15:06 【问题描述】:

我花了一天的时间在这个问题上,你可能会发现它非常基本......我在网上阅读了很多东西,但无法让我的东西正常工作。

我在表单中有一个简单的 2 个单选字段,我想检索选中单选按钮的值。这是我的表格:

<div class="col-xs-6">
    <div class="radio radio-inline">
              <input type="radio" id="id1" data-toggle="radio" name="deliveryMethod" value="courrier" checked="">
              <label for="id1">Courrier</label>
    </div>
    <div class="radio radio-inline">
              <input type="radio" id="id2" data-toggle="radio" name="deliveryMethod" value="local">
              <label for="id2">Local</label>
    </div>
</div>

我的js是:

$('input[type="radio"]').change(function() 
            console.log(this.value)
);

我无法获得正确的值。我得到相反的值(选择 Courier 时为本地值,反之亦然)。当我点击标签时,我也会得到这两个值......

我真的迷路了。

非常感谢您的帮助。

【问题讨论】:

你的代码应该可以工作,确保你包含正确的jquery 发布一个工作代码 sn-p 展示您的问题。 您确定没有代码在您的 JS 中进一步修改您的功能吗? (可能重复?)我创建了一个 JSFiddle 并且它工作正常:jsfiddle.net/4gZAT/1580 【参考方案1】:

我刚刚将您的代码粘贴到 jsfiddle 中,它可以正常工作。

https://jsfiddle.net/c42vd3m9/1/

我唯一的想法是你可能复制不正确

$('input[type="radio"]').change(function() 
        console.log(this.value)
);

到您的文档中。

【讨论】:

【参考方案2】:

是的,您的代码正在运行。我也尝试过您的代码。

试试这个https://jsfiddle.net/eaje2ywt/4/

$('input[type="radio"]').change(function() 
        console.log($(this).val());
);

【讨论】:

【参考方案3】:

正如其他人所说,它工作得很好。

这是一个您应该尝试的完整示例:

<!DOCTYPE html>
<html lang="en">
   <head>
      <title>RadioButton Example</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
   </head>
   <body>
      <div class="container">
         <div class="col-xs-6">
            <div class="radio radio-inline">
               <input type="radio" id="id1" data-toggle="radio" name="deliveryMethod" value="courrier" checked="">
               <label for="id1">Courrier</label>
            </div>
            <div class="radio radio-inline">
               <input type="radio" id="id2" data-toggle="radio" name="deliveryMethod" value="local">
               <label for="id2">Local</label>
            </div>
         </div>
      </div>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      <script type="text/javascript">
         $('input[type="radio"]').change(function() 
                 console.log(this.value)
         );
      </script>
   </body>
</html>

额外

如果您想获取第一个值(第一次呈现页面时),那么您应该尝试使用一些 jQuery 函数,例如“准备就绪”或“加载时”。

$(document).ready(function()
    // Perform something here...

);


//or

$(document).load(function()
   // Perform something here...
);

【讨论】:

谢谢大家。问题一定是不同的。我会继续调查。 但是有效吗?你试过运行我给你的代码吗?不断更新,以便我们解决您的问题。【参考方案4】:

根据 w3schools,这是正常行为 https://www.w3schools.com/jsref/event_onchange.asp

定义和用法

onchange 事件发生在 元素已更改。对于单选按钮和复选框, onchange 事件在检查状态发生变化时发生。

提示:此事件类似于 oninput 事件。不同之处在于 oninput 事件在元素的值具有后立即发生 已更改,而 onchange 发生在元素失去焦点时,在 内容已更改。另一个区别是 onchange 事件也适用于元素。

因此,无论何时取消选择单选按钮(通过选择另一个单选按钮),您都会获得它的值。因此,您可以使用 oninput 或 onchange,具体取决于您希望操作发生的时间点。

【讨论】:

以上是关于无法获取复选框的值的主要内容,如果未能解决你的问题,请参考以下文章

Angular Checkbox - 无法获取数据库的值以匹配 html 复选框中的复选标记

从多个复选框获取字符串形式的值

无法获取未选中的复选框值

访问VBA:从另一个表单获取复选框的价值

JS如何获取表单中复选框的值?

jquery怎样获取多个复选框的值?