Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用户表单验证是否已填写?_Javascript_Jquery_Asp.net Mvc_Validation - Fatal编程技术网

Javascript 用户表单验证是否已填写?

Javascript 用户表单验证是否已填写?,javascript,jquery,asp.net-mvc,validation,Javascript,Jquery,Asp.net Mvc,Validation,我目前有一个用户表单 @using (Html.BeginForm("Iflexcst", "Costing", FormMethod.Post, new { onsubmit = "return (checkForm(this) && false);" })) { <label for="NUM">Number of Sets:</label> <br> <inpu

我目前有一个用户表单

@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" />
@使用(Html.BeginForm(“iflexst”、“Costing”、FormMethod.Post、new{onsubmit=“return(checkForm(this)&&false);”)
{
套数:

成本
还有一个javascript,在我按下submit按钮后进行验证

<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>

功能检查表(表格){
如果(form.Quan.value==“”){
警报(“错误:用户名不能为空!”);
form.username.focus();
返回false;
}
re=/^\w+$/;
}
我希望userform在执行Validation之后不要将数据提交给控制器,因为我的jquery当前返回消息,但随后仍然进入控制器函数,如果NUM为空,该函数将发送错误


如果上述问题很容易解决,那么在填写表单时是否也可以让它进行验证,例如,如果用户输入一个<10的数字,表单会立即显示一个弹出窗口,并且在该错误修复之前不会让您提交?

问题出在javascript的第行

form.username.focus();
由于表单中没有名为“username”的元素,因此当

if (form.Quan.value == "")
如果您试图聚焦表单中不存在的html元素,那么在返回false行被命中之前,浏览器将返回一个未捕获的引用异常,表单将转到控制器

要解决此问题,请删除以下行

 form.username.focus();
或者改成

 form.Quan.focus();

如果Quan文本框为空,则它将聚焦于您的Quan文本框,并且表单将不会发送到控制器。

为什么不将jquery.validate.unobtrusive与验证属性结合使用,并立即完成所有操作。我是否需要使用nuget manager安装它?并将其包含在捆绑包中?
像这样吗?默认情况下,它应该已经包括在内了(包括在
~/bundles/jqueryval
中)。你需要学习使用模型,并使用html帮助程序绑定到模型。请访问MVC网站,学习基本教程解决了这一问题。哈哈!谢谢你的帮助!我为你提供了wisdomPerfect的绿色标记!可能对其他人也有用:)