我目前有一个用户形式
@using (Html.BeginForm("Iflexcst", "Costing", FormMethod.Post, new { onsubmit = "return (checkForm(this) && false);" }))
{
<label for="NUM">Number of Sets:</label>
<br>
<input class="foo" id="NUM" type="text" value=@ViewBag.Quantity name="Quan" />
<label for="CS"> Cost</label>
<br>
<input class="foo" id="CS" type="number" value=@ViewBag.result />
<input type="submit" value="Cost" />
我按下提交按钮后验证的javascript
<script type="text/javascript">
function checkForm(form) {
if (form.Quan.value == "") {
alert("Error: Username cannot be blank!");
form.username.focus();
return false;
}
re = /^\w+$/;
}
</script>
我希望userform在执行验证后不向控制器提交数据,因为我的jquery当前返回消息但仍然进入控制器函数,如果NUM为空则发送错误。
如果以上是一个简单的解决方案,那么在填写表格时也可以让它进行验证,例如,如果用户输入一个数字&lt; 10表格会立即显示弹出窗口并且不会让您提交,直到此错误得到修复?
答案 0 :(得分:0)
问题出在您的javascript行
form.username.focus();
因为名称“username”中没有元素所以当语句
时if (form.Quan.value == "")
得到真实你试图集中一个你的表单中不存在的html元素,所以在返回false行被触发之前,浏览器返回一个未被捕获的引用异常,表单转到控制器。
要解决此问题,请删除以下行
form.username.focus();
或将其更改为
form.Quan.focus();
如果它是空的并且表单不会转到控制器,它将聚焦Quan文本框。