【问题标题】:jQuery get correct value of selected radio buttonjQuery获取所选单选按钮的正确值
【发布时间】:2019-06-06 23:24:25
【问题描述】:

经过研究和各种实现的大量尝试,寻找如何从我的应用程序中获取单选按钮值。基本上它是文件 Index.cshtml 中非常简单的单选按钮:

<div class="col-md-2">
            <div style="padding: 0 20px;">
                <label for="star-filter2"> Projects vendors status:</label>
                <fieldset id="star-filter2">
                    <input class="radioCheck2" id="rated-filter2" value="true" type="radio" name="starfilter2" />Rated<img src="~/images/check.png" alt="tick box" height="20" width="20" />
                    <br />
                    <input class="radioCheck2" id="rated-filter2" value="false" type="radio" name="starfilter2" />Not rated<img src="~/images/excl_mark.png" alt="excl mark" height="20" width="20" />
                    <br />
                    <input class="radioCheck2" id="rated-filter2" value="null" type="radio" name="starfilter2" />NULL<img src="~/images/excl_mark.png" alt="excl mark" height="20" width="20" />
                </fieldset>
            </div>
        </div>

这是我试图获取选定单选按钮值的 javascript 代码:

    $("#filter2").click(function () {

    var showRated = $('#rated-filter2').is(':checked');
    localStorage.setItem("showRated", showRated);
    var location = $("#filter-button2").find("a").attr("href")....;
    window.location.href = location;
});

在此代码行中: var showRated = $('#rated-filter2').is(':checked'); is working ,但它只是在检查时获取值。我想要什么,我想获取所选单选按钮的值,例如:true、“null”以及我插入单选按钮的任何值。

我尝试了这些行,但我得到的是“未定义”或总是错误的值。

$('#input[name=\'starfilter2\']:checked').val(); 
$('#rated-filter2:selected').val();
$('#input[name=starfilter2]:checked').val();

它们都不起作用。

【问题讨论】:

  • 您使用#input 作为选择器,但没有一个元素的ID 为input。试试$('input[name=starfilter2]:checked').val()。您的三个输入也具有相同的 ID,但情况并非如此 - ID 应该仅对页面上的一个元素是唯一的。
  • 因为它也是一个收音机,当change 事件被触发时,这意味着其中一个被选中(你不能真正取消选中没有代码的单选按钮)。因此,即使不检查是否已选中,您也可以使用类似这样的方法来获取选中的收音机的值:$('[name=starfilter2]').change(function() { alert(this.value); });
  • $(":radio:checked").val(); :radio 是一个特殊的 jQuery 选择器,等效于 $("input[type=radio]")

标签: javascript jquery


【解决方案1】:

哇,首先,在这种情况下,没有理由拥有多个同名的 Id。 ID 应该是唯一的(例如驾驶执照 ID 或社会安全号码)

$(document).ready(function(){
    $("input[type='button']").click(function() {
        var radioValue = $("input[name='star-filter2']:checked").val();
        if(radioValue){
            alert("Selected: " + radioValue);
        }
    });
});

或者替换这个

var radioValue = $("input[name='star-filter2']:checked").val();

有了这个

var radioValue = $("input[id='rated-filter2']:checked").val();

记住要有唯一的 ID。

【讨论】:

  • 只是跟进有关收音机名称的问题-如果您有一个收音机组,则该组中的所有收音机输入都应具有相同的名称(这就是它们被绑定在一起的方式,因此只能使用一个收音机签入同名组)。如果名称不同,则收音机不会捆绑在一起,它们基本上只是圆形复选框,无法取消选中。 jsfiddle.net/rwejadho
猜你喜欢
  • 1970-01-01
  • 2013-06-02
  • 2012-01-27
  • 2012-03-08
  • 2012-06-27
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多