我目前有一个用户表格
@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" [email protected] name="Quan" />
<label for="CS"> Cost</label>
<br>
<input class="foo" id="CS" type="number" [email protected] />
<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>
我希望用户表单在执行验证后不将数据提交给控制器,因为我的jquery当前返回了消息,但是仍然进入控制器函数,如果NUM为空,它将发送错误。
如果上述方法很容易解决,则还可以在填写表单时进行验证,例如,如果用户输入的数字<10,则该表单会立即显示一个弹出窗口,并且不会让您提交直到此错误已解决?
问题出在您的JavaScript中
form.username.focus();
由于表单中没有名为“用户名”的元素,因此在声明时
if (form.Quan.value == "")
变为true时,您尝试将焦点放在表单中不存在的html元素上,因此在击中return false行之前,浏览器将返回未捕获的引用异常,并且表单将进入控制器。
要解决此问题,请删除以下行
form.username.focus();
或将其更改为
form.Quan.focus();
如果您的Quan文本框为空,则该文本框将聚焦于该文本框,并且该表单将不会传递给控制器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句