无法通过JQuery

时间:2017-06-05 20:23:29

标签: javascript jquery asp.net-mvc razor html-helper

我正在处理代码以确定是否显示联系信息部分。为此,我实现了RadioButtonFor html-helper,其中包含Razor中MVC视图模型的布尔值。

当页面加载时,我需要更改默认值,而不是显示它,以便在HasConflicts模型值为true时显示它。我试图在页面加载时使用JQuery来执行此操作,但所选的选项不会更改。

这是Razor部分

 <div class="left-col" id="noConflict">
    @Html.RadioButtonFor(m => m.HasConflicts, "false") <strong><em>No Conflict of Interest exists at this time</em></strong>
 </div>
 <div class="right-col" id="yesConflict">
    @Html.RadioButtonFor(m => m.HasConflicts, "true") <strong><em>A Conflict of Interest exists at this time</em></strong>
 </div>

这里是JQuery,我试图加入页面加载,继网站的另一个答案,并删除条件只是为了看看我是否能得到&#34; yesConflict&#34;按钮被选中。

$(function () {        
    $('#yesConflict').prop('checked', true).change();
};

最奇怪的是更改事件发生了,所以这应该是正确的ID,但屏幕上选择的按钮不会改变。

感谢任何意见,谢谢!

编辑:我收到了那些RadioButtonFor行的HTML输出请求 - 就在这里。

    <div class="left-col" id="noConflict">
        <input checked="checked" data-val="true" data-val-required="The HasConflicts field is required." id="HasConflicts" name="HasConflicts" type="radio" value="false" /> <strong><em>No Conflict of Interest exists at this time</em></strong>
    </div>
    <div class="right-col" id="yesConflict">
        <input id="HasConflicts" name="HasConflicts" type="radio" value="true" /> <strong><em>A Conflict of Interest exists at this time</em></strong>
    </div>

在此处运行时通过IE Developer Tools进行检查时有两个输入:

<input name="HasConflicts" id="HasConflicts" type="radio" checked="checked" value="false" data-val-required="The HasConflicts field is required." data-val="true" data-dpmaxz-eid="6">
<input name="HasConflicts" id="HasConflicts" type="radio" value="true" data-dpmaxz-eid="7">

如果我能得到任何进一步的帮助,请告诉我。我研究过的所有东西都说我放在那里的JQuery系列应该用JQuery 1.6及以上的方式做我想要的,使用1.10 - 但它根本不起作用。

1 个答案:

答案 0 :(得分:2)

首先, ID是唯一的

对于id="HasConflicts",您不应该多次使用它,尝试将其更改为class="HasConflicts"等,因为当您致电#HasConflicts时,它只会定位到第一个。

jQuery代码的解决方案:

您要定位父元素,使用$('#yesConflict > input')定位输入广播(#yesConflict的直接子广告),请检查以下内容:

  

注意:

     

$('#yesConflict input')使用空格,它会在#yesConflict

中找到所有输入      

$('#yesConflict > input')使用>它只定位#yesConflict的直接子女

&#13;
&#13;
$(function() {
  $('#yesConflict > input').prop('checked', true).change();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="left-col" id="noConflict">
  <input checked="checked" data-val="true" data-val-required="The HasConflicts field is required." id="HasConflicts" name="HasConflicts" type="radio" value="false" /> <strong><em>No Conflict of Interest exists at this time</em></strong>
</div>
<div class="right-col" id="yesConflict">
  <input id="HasConflicts" name="HasConflicts" type="radio" value="true" /> <strong><em>A Conflict of Interest exists at this time</em></strong>
</div>
&#13;
&#13;
&#13;