使用jQuery在页面加载时获取单选按钮的默认值

时间:2016-10-25 13:51:18

标签: javascript c# html asp.net-mvc

我有两个单选按钮,我设置为默认值(第一个选中的值单选按钮是加载时的默认按钮),如下所示:

  var listing_type;
  var shipping_location;
  $(":radio[name='type'][value='1']").attr('checked', 'checked');
  $(":radio[name='shipping'][value='1']").attr('checked', 'checked');

当用户点击单选按钮中的某些值时,会捕获如下值:

  $('input:radio[name=type]').click(function () {
            listing_type = $(this).val();
        });
        $('input:radio[name=shipping]').click(function () {
            shipping_location = $(this).val();
        });

这段代码的第二部分工作得很好,当用户点击一些单选按钮时,值正确地传递给我的MVC Action。

但是,如果用户没有点击单选按钮上的任何内容(即将它们保留为页面加载时的默认值)并单击“搜索”按钮,则无法捕获该值...

我的MVC Action中的值由于某种原因始终为null,即使它们不应该是。以下是我传递值的方法,这里是Action的C#代码:

  $.post("/Search/Index", { keywords: $('.txtSearch').val(), type: /*  listing_type */ <=> $('input[name=type]:checked').val(), location: $('input[name=shipping]:checked').val() <=> /*shipping_location*/ }, StartLoading())
                           .done(function (data) {
                               StopLoading();
                               var brands = $('<table />').append(data).find('#tableProducts').html();
                               $('#tableProducts').html(brands);
                               $('#tableProducts thead').show();
                           });
            }

这就是行动:

 public ActionResult Index(string keywords, string type, string location)
        {
// If the user doesn't interacts with the radio buttons and just enters the search term (ie. keywords) the type and location variables are null).  
       if ((keywords != null && keywords != "")  && (type != null && type != "") && (location != null && location!=""))
            {
                // do something here.... 
            }
            return View();
        }

所以现在我的问题是:

如果用户没有与它们交互,我怎么能从单选按钮传递默认值(即传递我在页面加载时设置的默认值)???

1 个答案:

答案 0 :(得分:1)

尝试一下:

$('input:radio[name="type"]').filter('[value="1"]').attr('checked', true);
$('input:radio[name="shipping"]').filter('[value="1"]').attr('checked', true);