我有一个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以外的值。我还想阻止在进行此更改之前提交表单。