当您点击其他字段时,如何防止MVC验证消息消失?

时间:2015-07-31 12:15:38

标签: javascript jquery asp.net-mvc asp.net-mvc-4 asp.net-mvc-validation

我有一个asp.net MVC / Razor项目。其中一个观点有一系列下拉菜单。当您从下拉列表中选择一个选项时,javascript代码会检查该选项是否已被另一个下拉列表选中。如果有,则设置验证消息并警告用户。这一切都很好。问题是,当我单击另一个下拉列表或文本框时,验证消息将消失。此外,现在可以提交表格。我需要做些什么才能将验证消息保留在屏幕上?

这是部分代码:

@using (Html.BeginForm("ChallengeQuestion", "Admin"))
{
  @Html.DropDownListFor(m => m.Q1, Model.QuestionList, "---Select Question---")<br />
 <span class="validation">@Html.ValidationMessageFor(m => m.Q1)</span>
 @Html.TextBoxFor(m => m.Ans1)

 @Html.DropDownListFor(m => m.Q2, Model.QuestionList, "---Select Question---")<br />
 <span id = "spValidQ2" class="validation">@Html.ValidationMessageFor(m => m.Q2)</span>
 @Html.TextBoxFor(m => m.Ans2)

 @Html.DropDownListFor(m => m.Q3, Model.QuestionList, "---Select Question---")<br />
 <span class="validation">@Html.ValidationMessageFor(m => m.Q3)</span>
 @Html.TextBoxFor(m => m.Ans3)

  <input id="Submit1" type="submit" value="Submit" class="btn btn-primary" />
}

<script>
    $("#Q2").change(
        function () {
            if ($("#Q2").val() == $("#Q1").val()) {
                $("#spValidQ2 .field-validation-valid").text("This question has already been used.");
            }
        })

所以发生的事情是用户从下拉列表Q1中选择一个选项。当他们从Q2中选择一个选项时,javascript会检查它是否与Q1中的值相同。如果是,则显示错误消息。这部分正在运作。问题是,现在错误消息存在,如果我点击anothera控件,比如Q3下拉列表或Ans1文本框,错误消息就会消失。

我想要发生的是javascript在屏幕上显示错误消息,直到Q2下拉列表中的值更改为Q1以外的值。我还想阻止在进行此更改之前提交表单。

0 个答案:

没有答案