【问题标题】:JQuery: How to get selected radio button value?JQuery:如何获取选定的单选按钮值?
【发布时间】:2011-05-07 12:49:49
【问题描述】:

如何将未选中的单选按钮的值默认为0

我有以下 HTML:

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

我有以下代码来获取 selected 单选按钮的值

var radio_button_value $('input[name=myradiobutton]:radio').click(function() {var value = $(this).val();});

问题是,如果选择 nothing,我想将 radio_button_value 的值默认为 0。我该怎么做?

我基本上想做下面的伪代码(但这不起作用)

var radio_button_value $('input[name=myradiobutton]:radio').click(function() { 
if set
  return $(this).val();
else
  return 0;
});

更新

我的要求似乎有些混乱。

当页面加载时(在用户甚至有机会选择单选按钮之前)我想要做什么,我想要一个函数,该函数将为单选按钮的值返回 0。

然后,一旦用户选择了单选按钮,该 SAME 函数将返回单选按钮的选定值。

有意义吗?

【问题讨论】:

  • 我不明白这个。当然,如果您单击了单选按钮,则必须选择其中一个?你在什么情况下需要这个?
  • 我想将默认值设置为 0,这样当页面加载时,在用户有机会选择单选按钮之前,我的函数将返回 0。然后一旦用户选择单选按钮,它将返回所选属性的值。有意义吗?
  • 差不多。所以你有一个函数(没有在单选按钮上调用click)需要知道是否有选中的单选框?

标签: javascript jquery jquery-selectors


【解决方案1】:

可能最好的方法(特别是如果您希望能够发布默认值)是有一个隐藏的单选按钮,该按钮以选中状态开始并具有您的默认值。所以是这样的:

<input type="radio" name="myradiobutton" value="0" checked="checked" style="display:none;" />
<input type="radio" name="myradiobutton" value="1" />1
<input type="radio" name="myradiobutton" value="2" />2
<input type="radio" name="myradiobutton" value="3" />3

如果不能直接修改html,可以通过脚本添加:

$(function() {
    $('input[name=myradiobutton]:radio:first').before('<input type="radio" name="myradiobutton" value="0" checked="checked" style="display:none;" />');
});

这是一个演示:http://jsfiddle.net/Ender/LwPCv/

【讨论】:

  • 出于某种原因,这实际上不起作用。这是因为我使用的是 .click 方法并且默认值没有被“点击”
  • 点击某物后,报告的值将是刚刚点击的元素的值。查看这个修改后的演示:jsfiddle.net/Ender/z52PS
【解决方案2】:

$('input[name=myradiobutton]:radio:checked') 将为您提供选中的单选按钮 $('input[name=myradiobutton]:radio:not(:checked)') 将为您提供未选中的单选按钮

使用这个你可以做到这一点

$('input[name=myradiobutton]:radio:not(:checked)').val("0");

更新:阅读您的更新后,我想我明白了 你会想做这样的事情

var myRadioValue;

function radioValue(jqRadioButton){
  if (jqRadioButton.length) {
    myRadioValue = jqRadioButton.val();
  }
  else {
    myRadioValue = 0;
  }
}

$(document).ready(function () {
  $('input[name=myradiobutton]:radio').click(function () {   //Hook the click event for selected elements
    radioValue($('input[name=myradiobutton]:radio:checked'));
  });

  radioValue($('input[name=myradiobutton]:radio:checked')); //check for value on page load
});

【讨论】:

  • 但尚未选择单选按钮。因此,这不会单独工作。
  • @StaceyH ...你想什么时候做这个检查? OnSubmit 表单?
【解决方案3】:

使用:checked 选择器确定是否选择了某个值:

function getRadioValue () {
    if( $('input[name=myradiobutton]:radio:checked').length > 0 ) {
        return $('input[name=myradiobutton]:radio:checked').val();
    }
    else {
        return 0;
    }
}

更新你可以随时调用上面的函数来获取单选按钮的选中值。您可以在加载时挂钩它,然后每当值随以下事件发生变化时:

$(document).ready( function() {
    // Value when you load the page for the first time
    // Will return 0 the first time it's called
    var radio_button_value = getRadioValue();

    $('input[name=myradiobutton]:radio').click( function() {
        // Will get the newly selected value
        radio_button_value = getRadioValue();
    });
}

【讨论】:

    【解决方案4】:

    如果存在未选择某些内容的实例,您确实应该使用复选框。

    根据 W3C

    如果在一组共享相同控件名称的单选按钮中没有最初为“on”的单选按钮,则选择哪个控件最初为“on”的用户代理行为是未定义的。笔记。由于现有实现对这种情况的处理方式不同,因此当前规范不同于 RFC 1866([RFC1866] 第 8.1.2.4 节),其中指出:

    始终只选中一组中的一个单选按钮。如果一组单选按钮的任何元素都没有指定“已检查”,则用户代理必须首先检查该组的第一个单选按钮。

    由于用户代理行为不同,作者应确保在每组单选按钮中,一个最初是“打开”的。

    【讨论】:

      【解决方案5】:

      我知道这是一个老问题,但我发现答案不够充分

      最简洁的方法是使用此代码

      $(".myRadio").click(function() {
      alert($(this).val());   
      });
      

      :-)

      您的表单输入数据应如下所示

      <input type="radio" value="40000" name="pay"  class="myRadio" />
      <label for="40000">40000</label>
      

      【讨论】:

        【解决方案6】:
        jQuery("input:radio[name=myradiobutton]:checked").val();
        

        【讨论】:

          【解决方案7】:

          这个 Jquery 方法在页面加载时返回默认值 0...

          $('input[type="radio"]:checked').val();
          

          【讨论】:

            【解决方案8】:

            它会在页面加载后立即启动。 您可以将其保留在某些事件下,例如按钮单击

            $("#btn").click(function() { 
            var val= $('input[type="radio"]:checked').val();
            });
            

            【讨论】:

              【解决方案9】:

              这项工作对我来说希望这会有所帮助: 要获得收音机选择的值,您必须像这样使用比率名称作为选择器

              selectedVal = $('input[name="radio_name"]:checked').val();
              

              selectedVal 将具有所需的值,根据您的更改 radio_name,在您的情况下它将是 b“myradiobutton”

              selectedVal = $('input[name="myradiobutton"]:checked').val();
              

              【讨论】:

                【解决方案10】:

                对于单选按钮,请使用以下脚本:

                var myRadio = $('input[name=meme_wall_share]');
                var checkedValue = myRadio.filter(':checked').val();
                

                【讨论】:

                  【解决方案11】:

                  要获取所选单选按钮的值,请使用 RadioButtonName 和包含单选按钮的表单 ID。

                  $('input[name=radioName]:checked', '#myForm').val()
                  

                  OR 仅

                  $('form input[type=radio]:checked').val();
                  

                  【讨论】:

                    猜你喜欢
                    • 2012-01-27
                    • 2013-03-28
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-07-28
                    相关资源
                    最近更新 更多