2013-02-19 77 views
0

得到了一个ASP.Net MVC3(C#)应用此HTML:单选按钮选中时=未渲染检查 “选中”

<div class="row-fluid"> 
    <div class="span4"> 
     <label for="MailPrefBusi">Business Street</label> 
     <input type="radio" checked="checked" class="validate[groupRequired[MailingPreference]] MailingPreference" 
      parent_tab="tab4" id="MailPrefBusi" name="MailingPreference" value="1"> 
    </div> 
    <div class="span4"> 
     <label for="MailPrefBusiPO">Business PO</label> 
     <input type="radio" class="validate[groupRequired[MailingPreference]] MailingPreference" 
      parent_tab="tab4" id="MailPrefBusiPO" name="MailingPreference" value="0" disabled="disabled"> 
    </div> 
    <div class="span4"> 
     <label for="MailPrefHome">Home</label> 
     <input type="radio" class="validate[groupRequired[MailingPreference]] MailingPreference" 
      parent_tab="tab4" id="MailPrefHome" name="MailingPreference" value="2"> 
    </div> 
</div> 

但是观看在浏览器时,FF,IE9,IE8和铬,MailPrefBusi无线电不显示检查。

下面是生成HTML代码:

<div class="row-fluid"> 
    @{ 
     String busipref = ""; 
     String popref = ""; 
     String homepref = ""; 
     switch (ViewBag.part.MailingPreference) 
     { 
      case 1: 
       busipref = "checked=\"checked\""; 
       break; 
      case 0: 
       popref = "checked=\"checked\""; 
       break; 
      case 2: 
       homepref = "checked=\"checked\""; 
       break; 
     } 
    } 
    <div class="span4"> 
     <label for="MailPrefBusi">Business Street</label> 
     <input type="radio" value="1" name="MailingPreference" id="MailPrefBusi" 
       parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(busipref) /> 
    </div> 
    <div class="span4"> 
     <label for="MailPrefBusiPO">Business PO</label> 
     <input type="radio" value="0" name="MailingPreference" id="MailPrefBusiPO" 
       parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(popref) /> 
    </div> 
    <div class="span4"> 
     <label for="MailPrefHome">Home</label> 
     <input type="radio" value="2" name="MailingPreference" id="MailPrefHome" 
       parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(homepref) /> 
    </div> 
</div> 

也有这样的jQuery代码:

if ($("#BusinessAddress1").val() == "") { 
    $("#MailPrefBusi").attr('checked', false); 
    $("#MailPrefBusi").attr('disabled', true); 
} else { 
    $("#MailPrefBusi").attr('disabled', false); 
    if ($("#MailPrefBusi").attr('checked')) { 
     $("#MailPrefBusi").attr('checked', 'checked'); 
    } 
} 
if ($("#HomeAddress1").val() == "") { 
    $("#MailPrefHome").attr('checked', false); 
    $("#MailPrefHome").attr('disabled', true); 
} else { 
    $("#MailPrefHome").attr('disabled', false); 
    if ($("#MailPrefHome").attr('checked')) { 
     $("#MailPrefHome").attr('checked', 'checked'); 
    } 
} 
if ($("#POAddress1").val() == "") { 
    $("#MailPrefBusiPO").attr('checked', false); 
    $("#MailPrefBusiPO").attr('disabled', true); 
} else { 
    $("#MailPrefBusiPO").attr('disabled', false); 
    if ($("#MailPrefBusiPO").attr('checked')) { 
     $("#MailPrefBusiPO").attr('checked', 'checked'); 
    } 
} 

但它仍然没有显示检查。这是这种形式非常关键的一部分,这个广播组必须至少检查一个项目。如果用户没有看到它被检查,我不确定值是否被正确发送,要么是因为我们已经有用户的MailingPreference被修改为具有空地址的值的实例,没有好的!

验证使用jQuery ValidationEngine完成。

我不确定这里发生了什么。我已经搜索了高和低找到答案,但空出来,我尝试的一切都有同样的结果。

+1

使用jQuery的.prop()函数,这个不是.attr():HTTP:/ /api.jquery.com/prop/ – 2013-02-19 23:27:55

+0

仍然不认为这会有所作为。 – MB34 2013-02-19 23:30:51

+1

@HanletEscañ0 - 更改为使用.prop(),它工作。谢谢。 – MB34 2013-02-20 15:18:31

回答

1

我很久以前也有过类似的问题。基本上,我结束了是把单选按钮列表初始化客户端上,它看起来是这样的:

$(function() { 
    $('input[name=MailingPreference]:eq('[email protected](ViewBag.part.MailingPreference)+')').attr('checked', 'checked'); 
}); 
+0

我接受了这个,但它没有选择VALUE = ViewBag.part.MailingPreference;它只选择组的第一个(索引)。 – MB34 2013-02-20 15:04:41

+0

这实际上工作:'$('input [name = MailingPreference]')。filter(function(){return $(this).val()== @(ViewBag.part.MailingPreference);})' – MB34 2013-02-20 15:16:59

+0

Added this代码根据ViewBag值选择Gender:'$('select [name = Gender] option')。filter(function(){return $(this).val()== @(ViewBag.part.Gender) ;})。prop('selected',true);'这个filter()函数很酷。 – MB34 2013-02-21 17:53:43