0

我有一个像这样的复选框循环

@{
         for (int i = 0; i < Model.Lessons.Count; i++ )
        {
            @Html.Label(Model.Lessons[i].Lesson.Title)
            @Html.HiddenFor(x => x.Lessons[i].Lesson.ID)

            @Html.CheckBoxFor(x => x.Lessons[i].LessonSelected,new {id = "ddLesson"+i.ToString()})
        }
}

现在我想在 jquery 代码中禁用这些复选框,直到我在下拉列表中选择我的标题之一。我该怎么做?

4

4 回答 4

0

尝试

HTML/剃须刀

for (int i = 0; i < Model.Lessons.Count; i++ )
{
    @Html.Label(Model.Lessons[i].Lesson.Title)
    @Html.HiddenFor(x => x.Lessons[i].Lesson.ID)

    @Html.CheckBoxFor(x => x.Lessons[i].LessonSelected, 
                   new {id = "ddLesson"+i.ToString() @disabled = "disabled" })
}

JS

$('#dropdownList').change(function() {

    if($(this).val() == 'whatever') {
        $('input[name^=ddLesson]').each(function(i) {
            $("#ddLesson" + i).removeAttr('disabled');
        });
    }

});

所有复选框在加载时都被禁用。如果您从下拉列表中选择“whatever”,上述 JS 将启用所有复选框。

JSFiddle:http: //jsfiddle.net/X87L6/1/

但是,如果您的意思是您将选择一个等于您要启用的复选框的 id 的值:

$('#dropdownList').change(function() {
   var id = $(this).val();
   $(id).removeAttr("disabled");

});
于 2013-06-20T05:07:09.267 回答
0

尝试这个

    $(document).ready(function () {
        $('[id^="ddLesson"]').prop('disabled', 'disabled');//default set checkbox disable
        $('.somedropdown').change(function () {//on dropdown change
            if ($(this).val() != '0') {
                $('[id^="ddLesson"]').removeAttr('disabled'); //This will enable all checkboxes starts with ddLesson. 

            }
        });


    });  
于 2013-06-20T05:22:09.233 回答
0

如果您有这些具有相似名称的复选框,那么您可能需要使用 **StartsWith" 属性。

<script type ="text/javascript">
 $(document).ready(function() {

   $('.somedropdown').change(function() {

      $('input[name^="ddLesson"]').disabled = true;//This will disable all checkboxes starts with ddLesson. other wise you can use a for loop to disable the checkboxes.

   });


 });  
</script>

startwith jquery 链接在这里

于 2013-06-20T05:05:53.233 回答
0

为什么你需要 jquery 呢?CheckBox助手需要一个值作为第二boolean个参数。试试这样:

@Html.CheckBoxFor(x => x.Lessons[i].LessonSelected, 
                            new {id = "ddLesson"+i.ToString(), disabled = "disabled"})
于 2013-06-20T05:06:29.560 回答