Один флажок, чтобы отключить некоторые CheckBox для - PullRequest
0 голосов
/ 20 февраля 2019

Я работаю над программой MVC.

Я использую язык Razor в представлении для отображения списка проектов (из базы данных через контроллер / модель) с помощью CheckBoxFor :

for (int i = 0; i < Model.ProjectList.Count; i++)
    {
        @Html.HiddenFor(m => m.ProjectList[i].Id)
        <li>@Html.CheckBoxFor(m => m.ProjectList[i].IsChecked,
        new { id = "projectList_" + i, className = "CheckBoxProject" }) 
        @Model.ProjectList[i].Name</li>
    }

Эта часть работает нормально.

Я хотел бы добавить еще один CheckBox, чтобы снять и отключить предыдущий ChekBoxFor и предотвратить их проверку.Я попытался сделать это с помощью некоторого JavaScript, поставив в конце View:

<input type="checkbox" id="SetBox" value="SetBox" onclick="CheckBoxState(this);">

<script type="text/javascript" onload="loaded=1">
function CheckBoxState(elementRef) {
        document.querySelectorAll('.CheckBoxProject').checked = false;
        document.querySelectorAll('.CheckBoxProject').disabled = true;
};

Так что, если я понимаю, что я сделал, то «onclick» должен вызвать функцию Javascript с именем «CheckBoxState» .Затем возьмите все CheckBox для класса className CheckBoxProject , снимите флажок и отключите их.

Когда я пытаюсь сделать это в Firefox, ничего не происходит, когда я проверяю последний CheckBox и инспектор страницы показываетпредупреждение что-то вроде (не на английском языке): не удалось загрузить скрипт, где источник "http://localhost:. ... / browserLink "

Я не уверен, как сказать View, что я использую Javascript, и если Razor язык способен работать с Javascript .

Я пыталсяразные способы кодирования JavaScript в зависимости от того, что я нашел в StackOverflow, и после нескольких сбоев я смиряюсь с вопросом ...

1 Ответ

0 голосов
/ 25 февраля 2019

В конце концов я нашел что-то, что работает с jQuery (чего я не знал):

<input type="checkbox" id="SetBox"> <label>Uncheck and disable other Checkbox</label>

<script type="text/javascript">

// Call function when the element with the id = SetBox is clicked
$('#SetBox').click(function(){

    var SetBox = document.getElementById("SetBox");

    if (SetBox.checked)
    {
        // select all checkbox (even SetBox) and unchecked + disabled them
        $('input:checkbox').prop('checked', false);
        $('input:checkbox').prop('disabled', true);

        // select only SetBox and check + enable it.
        $('#SetBox').prop('checked', true);
        $('#SetBox').prop('disabled', false);

    }
    else
    {
        // Make all checkbox available if SetBox is unchecked.
        $('input:checkbox').prop('disabled', false);
    }
});

Это работает с Html.CheckBoxFor ().

У меня все еще есть предупреждение: не удалось загрузить скрипт, где источником является «http://localhost:. ... / browserLink » Но, похоже, это не имеет значения.

Надеюсь, это поможеткто-то позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...