@ Html.CheckBoxFor () - Изменить цвет метки флажка

0

У меня есть динамически созданные флажки.

<div id="Priv">
@for (var i = 0; i < Model.Categories.Count; i++)
{
    <div>
        @Html.CheckBoxFor(m => Model.Categories[i].AllChecked, new { id = Model.Categories[i].CategoryID, @class = "parentChk" })
        @Html.HiddenFor(m => Model.Categories[i].CategoryName)
        <strong>@Model.Categories[i].CategoryName</strong>
        <br />
        @*@Html.JTDisplayTextFor(m => Model.Categories[i].CategoryName, "")*@
        @for (var p = 0; p < Model.Categories[i].Privileges.Count; p++)
        {
            @Html.HiddenFor(m => Model.Categories[i].Privileges[p].PrivilegeID)
            @Html.HiddenFor(m => Model.Categories[i].Privileges[p].PrivilegeName)
            @Html.CheckBoxFor(m => Model.Categories[i].Privileges[p].Checked, new { @class = "childChk" })
            @Html.JTDisplayTextFor(m => Model.Categories[i].Privileges[p].PrivilegeName, "")
        }
        <br />
    </div>
}

Что мне нужно сделать:

Когда страница загружается, некоторые флажки будут проверяться, а некоторые нет. Если я сниму флажок, он должен изменить фон метки флажка на красный, и если я поставлю флажок, который не был проверен, он должен изменить фон метки флажка на зеленый.

Кто-нибудь может мне помочь?

Редактировать:

Это Html одного из сгенерированных флажков:
<input class="childChk" data-val="true" data-val-required="The Checked field is required."id="Categories_0__Privileges_1__Checked" name="Categories[0].Privileges[1].Checked" type="checkbox" value="true">

РЕДАКТИРОВАТЬ:

1. CSS:

<style>

div.sch_cal_row {
    margin-top: 0px;
    margin-left: 0px;
    width: 300px;
    border-radius: 3px;
    height: 20px;
}


div.highlight {
    width: 300px;
    height: 20px;
    background-color: #E0FBD9;
}
div.high1 {
    width: 300px;
    height: 20px;
    background-color: #FFA07A;

}

div.available {
    width: 100px;
    height: 46px;
    background-color: #A8A69C;
}

2. JS:

<script type="text/javascript">
$(".childChk").click(function () {
    if ($(this).is(':checked')) {
        $(this).parent().removeClass();
        $(this).parent().addClass("highlight");

    } else {
        $(this).parent().removeClass("highlight");
        $(this).parent().addClass("high1");
    }
});

3. Html/Razor:

<div id="Priv">
@for (var i = 0; i < Model.Categories.Count; i++)
{
    <div>
        @Html.CheckBoxFor(m => Model.Categories[i].AllChecked, new { id = Model.Categories[i].CategoryID, @class = "parentChk" })
        @Html.HiddenFor(m => Model.Categories[i].CategoryName)
        <strong>@Model.Categories[i].CategoryName</strong>
        <br />
        @*@Html.JTDisplayTextFor(m => Model.Categories[i].CategoryName, "")*@
        @for (var p = 0; p < Model.Categories[i].Privileges.Count; p++)
        {
             <div class="sch_cal_row">
             @Html.HiddenFor(m => Model.Categories[i].Privileges[p].PrivilegeID)
             @Html.HiddenFor(m => Model.Categories[i].Privileges[p].PrivilegeName)
             @Html.CheckBoxFor(m => Model.Categories[i].Privileges[p].Checked, new { @class = "childChk" })
             @Html.JTDisplayTextFor(m => Model.Categories[i].Privileges[p].PrivilegeName, "")
         </div>

       }
     <br />
     </div>
}
</div>

У меня есть код выше, который меняет цвет фона parrent div, когда вы нажимаете на этот флажок. Но мне также нужно:

При загрузке или при изменении параметра из выпадающего меню изменяется состояние проверки некоторых из полей. Мне нужно, чтобы функция меняла цвет divs, когда состояние проверки автоматически изменяется, выбирая другой пункт из выпадающего меню

  • 0
    У вас есть два разных флажка. какой вы хотите?
  • 0
    Флажок «Ребенок» (второй)
Теги:
asp.net-mvc

3 ответа

1
Лучший ответ

Согласно нашей продолжительной дискуссии, вот решение:
HTML

<div class="sch_cal_row">
    <input type='checkbox' class="childChk" />
    <input type='checkbox' class="childChk" checked />
</div>

CSS

div.sch_cal_row {
    margin-top: 0px;
    margin-left: 0px;
    width: 300px;
    border-radius: 3px;
    height: 20px;
}

div.highlight {
    width: 300px;
    height: 20px;
    background-color: #E0FBD9;
}
div.high1 {
    width: 300px;
    height: 20px;
    background-color: #FFA07A;
}

div.available {
    width: 100px;
    height: 46px;
    background-color: #A8A69C;
}

Код JS

$(".childChk").click(function () {
    if($(".childChk:checked").length > 0){
        $(this).parent().removeClass().addClass("highlight");
    } else{
        $(this).parent().removeClass().addClass("high1");
    }
});

РАБОЧАЯ ДЕМО

  • 0
    Мне нужен способ сделать это без использования дополнительных ярлыков. Код, который я дал в начале, - это HTML, который используется для создания флажков. @Html.CheckBoxFor() - это MVC HtmlHelper, который генерирует все для флажка. Мне нужно изменить текстовую метку для цвета фона флажков с помощью JS без изменения какого-либо кода, который я предоставил
  • 0
    JS все еще не работает
Показать ещё 8 комментариев
0

Пожалуйста, обратите внимание на следующее:

Это должно работать на большинстве html, включая ваш MVC3/4/5 сгенерированный HTML через помощников :)

$('input[type=checkbox]').each(function(){
   if(this.checked==true){           
   $(this).prev('label').css('color','red');
}
else
{
   $(this).prev('label').css('color','green');
}
});

$('input[type=checkbox]').click(function(){
    if(this.checked==true)
{
    $(this).prev('label').css('color','red');
 }
 else
 {
    $(this).prev('label').css('color','green');
 }
 });

http://jsfiddle.net/7uhWc/

  • 0
    Это был мой первый ответ, и это не то, что на самом деле нужно ОП
0

Для загрузки страницы

$(document).ready(function(){

 $('.childChk').each(function(){

   if(this.checked==true){    
      $(this).toggleClass("green");
   }

 });

 //Whenever you click a check box

  $('.childChk').click(function(){

    if(this.checked==true){

      $(this).toggleClass("green");
    }

  });

});
  • 0
    А где red класс?
  • 0
    @Pavlo по умолчанию красный, тумблер зелёный переопределяет красный
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню