ShellCl Ответов: 1

Проверить, что один флажок снят из группы перед следующей/предыдущей страницей


Я пытаюсь проверить, что один из флажков установлен, прежде чем перейти на следующую/предыдущую страницу, но это не похоже на то, что мой чек попал. Этот сайт изначально был сделан кем-то другим, и я не очень часто работаю на сайтах.

У меня есть набор заполненных форм, и это часть моей второй вкладки:

Первый флажок выглядит следующим образом в RegistrationStep2.cshtml:

..
<tbody>
            <tr>

                <td>
                    <div class="col-md-12">
                        <div class="col-md-16">
                            <div>

                                @Html.EditorFor(model => model.PrivilegesS, new { htmlAttributes = new { @class = "RoleChk2" } })
                                <label for="PrivilegesS">(S)</label>

                            </div>
                        </div>

                    </div>
                </td>
       </tr>
  </tbody>
</table> 


После таблицы находятся кнопки Next/Previous:

<footer class="col-xs-12 form-group text-right">

        @(Html.Kendo().Button()
                          .Name("Previous1")
                          .Content("Previous")
                          .Events(ev => ev.Click("onPreviousClick")))

        @(Html.Kendo().Button()
                          .Name("Next4")
                          .Content("Next")
                          .HtmlAttributes(new { @class = "k-primary" })
                          .Events(ev => ev.Click("onNextClick")))
</footer>


Я попытался добавить скрипт, чтобы посмотреть, установлены ли какие-либо флажки в модели, но я никогда не вижу предупреждения, и оно позволяет мне перейти к следующему экрану, что не очень хорошо:

<script>
    @*This is my script for my checkboxes..the following does not get hit when run code*@
    $('input.Previous1'.on('click',
    function () {
        if (!model.PrivilegesS && !model.PrivilegesAJ && !model.PrivilegesT && !model.PrivilegesH && !model.PrivilegesE && !model.PrivilegesM && !model.PrivilegesFF) {
            alert('At least one facility privilege must be selected');
            return false;
        }
    }));

    $('input.Next4'.on('click',
    function () {
        if (!model.PrivilegesS && !model.PrivilegesAJ && !model.PrivilegesT && !model.PrivilegesH && !model.PrivilegesE && !model.PrivilegesM && !model.PrivilegesFF)  {
            alert('At least one Facility privilege must be selected');
            return false;
        }
    }));
</script>


У меня есть ApplicantCapturedData.cs:

..

//[Required(ErrorMessage = "Input is required.")]
        public bool PrivilegesS { get; set; }

        public bool PrivilegesH { get; set; }

        public bool PrivilegesFF { get; set; }

..имеет список переменных флажка здесь..


Я также попытался прикрепить его к событию в кнопке click like https://demos-да.telerik.com/aspnet-mvc/button/events, но у него уже есть событие на кнопке click to next/previous.

****Новинки****
* Мой скрипт должен запускаться при нажатии кнопки next/previous, что не является событием изменения. Если флажки не установлены, это не вызовет событие изменения для запуска сценария. Есть куча флажков привилегий. По крайней мере один должен быть проверен, но все они (есть около 10 флажков, не все показаны) могут быть проверены. Мне нужно убедиться, что хотя бы одна из них проверяется при нажатии кнопки next/previous. Как мне это сделать?

* Я удаляю сценарии изменений, которые не предназначены для моих флажков, потому что если флажки не установлены, то события изменений не происходит. Я просто оставил их там, потому что это было рядом в коде, и я подумал, что, возможно, у кого-то есть предложение, которое было бы похоже на то, что я не подумал.

* Радиальные кнопки здесь не будут работать, потому что может быть выбрано несколько привилегий. Это не " Да " / " нет " / "может быть". Это здания, и они могут быть во всех них в один момент.

Что я уже пробовал:

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

Я также добавил класс RoleChk2, но если флажки не установлены, то нет никакого события щелчка, чтобы следить за тем, чтобы оно было проверено.

Я подумывал о том, чтобы добавить переменную для установки, если что-то будет проверено, но я не очень хорошо знаком с MVC, поэтому не знаю, куда ее поместить. Кроме того, я не уверен, где проверить, установлен ли он, если они нажмут next/previous.

Я попытался сделать только один флажок обязательным вместо всей группы, как это должно быть с RoleChk2, и обязательным в моем ApplicantCapturedData.cs, но никогда не получал требуемого сообщения, когда я добавлял (un)прокомментированную [обязательную часть в ApplicantCapturedData.cs. Это работало с другими бланками/строками формы для заполнения, которые я не показываю.

@Html.EditorFor(model => model.PrivilegesS, new { htmlAttributes = new { @class = "RoleChk2", required="required" } })

Richard Deeming

@*the first few are older...they only let one of a set of different checkboxes be checked at a time*@
$('input.RoleChk').on('change', function () {
    $('input.RoleChk').not(this).prop('checked', false);
});


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

HTML <input type="радио"> | w3schools.com[^]

ShellCl

@richardDeeming - это более старый код, который был добавлен без требования проверки того, что по крайней мере один из флажков привилегий установлен при нажатии кнопки Next/Previous. Многостраничная форма имеет пробелы для заполнения и флажки, без радиокнопок. Я не думал, что несколько радиокнопок могут быть нажаты одновременно, или у меня был способ проверить, что хотя бы одна была нажата. Вы путаете мою проверку на щелчок следующего/предыдущего, а затем проверку хотя бы одного флажка с проверкой изменения других скриптов?

ShellCl

@richardDeeming - я посмотрел, и да, переключатели позволяют нажимать только на одну кнопку сразу. У меня есть случай, когда я могу проверить сразу несколько флажков. Он должен быть хотя бы один, но может иметь до 10 проверенных сразу. Мне нужно убедиться, что хотя бы один из них проверен, когда они нажимают кнопку next/previous.

Richard Deeming

Поэтому используйте переключатели для списков, в которых можно выбрать только один вариант, и флажки для списков, в которых можно выбрать несколько вариантов. :)

1 Ответов

Рейтинг:
1

Gerry Schmitz

Другой код подключение "изменить"; ты спишь "клик".

Судя по твоему описанию, я не понимаю, почему.


ShellCl

Это совсем другая функция. Мне нужно не переходить на следующую страницу (кнопка next/prev), если они не проверят хотя бы один из флажков в моем наборе. В другом наборе, если один отмечен, остальные не отмечены. Вы меня понимаете? Я опустил код, который идет вместе со сценариями изменений.

ShellCl

Если у вас есть предложение, я буду вам очень признателен!

ShellCl

Похоже на это https://stackoverflow.com/questions/7310590/required-data-annotation-not-working-on-a-group-of-checkboxes, но я не уверен, куда идет пользовательский класс проверки, AtLeastOneRegionMustBeCheckedAttribute, в MVC.

ShellCl

@gerrySchmitz - мне не нужен скрипт для запуска при изменении переменных привилегий. Скрипт должен запускаться при нажатии кнопки next/previous, что не является событием изменения. Если флажки не установлены, это не вызовет событие изменения для запуска сценария. Что вы предлагаете мне делать, если это не событие изменения? Я не говорю, что сценарии, которые подключают изменения, - это то, что я должен делать. По - видимому, это запутывает проблему. Если бы я мог вытащить их из сценария, который я опубликовал, я бы это сделал.