我的表单中有一些文本框。当输入无效值时,不显眼的jquery验证工作,并使框变为红色。但是,当我单击提交表单时,表单将发布回服务器。为什么呢?
是不是因为文本框不是在视图顶部声明的模型?
如何阻止发布表单?
@model Dictionary<Project, List<ProjectActualCapacity>>
@{
var model = Model.ToList();
}
@using (Html.BeginForm("ProjectActualCapacityIndex", "Project", FormMethod.Post))
{
<hr />
@Html.ValidationSummary(true)
@for (int i = 0; i < model.Count(); i++)
{
<tr>
<td>
@Html.DisplayFor(r => model[i].Key.Name)
</td>
@for (int j = 0; j < 12; j++)
{
{
<td>
@Html.TextBoxFor(r => model[i].Value[j].Hours, new { @class = "form-control input-sm text-right" })
@Html.HiddenFor(r => model[i].Value[j].ID)
</td>
}
@Html.HiddenFor(r => model[i].Key.ID)
}
</tr>
}
<input type="submit" value="Set Values" class="btn btn-default" />
}
答案 0 :(得分:1)
确保您的web.config中有CliventValidationEnabled和UnobstrusiveJavaScriptEnabled,见下文。
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
答案 1 :(得分:0)
<form action="..." onsubmit="return validateForm()" method="...">
...
<input type="submit" value="Submit">
</form>
您可以针对表单尝试上述代码。对于要提交的表单,validateForm方法必须返回true,如果返回false,则表单将不会提交。
答案 2 :(得分:0)
添加
onclientclick="return false;"
按钮应该停止发布(总是,你需要在这里添加你的逻辑以使其可选)和
usesubmitbehaviour="false"
选项。还有enablevalidation =&#34; false&#34;应该打破它。