javascript - 表单验证后未提交

标签 javascript asp.net-mvc validation kendo-ui

提交表单后,会出现警报万岁!当验证为 true 时触发,但表单实际上并未提交。如果我用 @using (Html.BeginForm()) 替换表单,它可以,但剑道验证不起作用?

 <div class="form-horizontal">
    <h2 class="ra-well-title">Your Details</h2>


    <form id="ticketsForm">
        <div class="form-horizontal form-widgets col-sm-4">
            <div class="form-group">
                <label class="control-label col-sm-4" for="fname">First Name</label>
                <div class="col-sm-8 col-md-6">
                    @Html.TextBoxFor(m => m.firstName, new { @class = "input k-textbox", placeholder = "Enter Firstname", required = "required", validationmessage = "Required", id = "pFirstName", onchange = "OnChangeEventpFirstName()" })
                </div>


            </div>

            <div class="form-group">
                <label class="control-label col-sm-4" for="name">Last Name</label>
                <div class="col-sm-8 col-md-6">
                    @(Html.Kendo().TextBox()
                          .Name("surName")
                      .HtmlAttributes(new { placeholder = "Last Name", required = "required", validationmessage = "Enter Lastname", id = "pSurName", onchange = "OnChangeEventpSurName()" })
                    )
                </div>


            </div>


            <input type="submit" value="Send Booking" class="btn k-button" onclick="return confirm('Ready to send Booking?')" />
    </form>


    <script>
        $(function () {
            var validator = $("#ticketsForm").kendoValidator().data("kendoValidator");
            var status = $(".status");

            $("form").submit(function (event) {
                event.preventDefault();
                if (validator.validate()) {
                    alert("Hooray! Your tickets has been booked!")
                        .removeClass("invalid")
                        .addClass("valid");
                } else {
                    alert("Oops! There is invalid data in the form.")
                        .removeClass("valid")
                        .addClass("invalid");
                }
            });
        });

    </script>


</div>

最佳答案

您正在使用 event.preventDefault,这会阻止表单提交。您应该将该行移至 else 语句内,以便仅在验证失败时停止提交。

至于为什么当您使用 BeginForm 时验证不会触发,很可能是表单的 ID 不同或丢失,因此 JavaScript 未绑定(bind)到表单。

关于javascript - 表单验证后未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776998/

相关文章:

javascript - 使用表达式作为函数参数时,AngularJS 抛出语法解析错误

asp.net-mvc - Ninject DI 导致部署问题

php - Symfony sfWidgetFormChoice 对于多个选择(复选框)总是无效

javascript - 用于将具有相同键和值的 React props 传递给组件的语法糖

javascript - 在 Google Apps 脚本中查找两个数组(缺失值)之间的差异

javascript - 未在 &lt;script&gt; block 内解析的 JSF 组件

asp.net-mvc - MVC - 强类型 View 被破坏

asp.net-mvc - 具有不同角色的多个组织中的用户

java - 如何使用Servlet验证JSP并保留输入数据?

node.js - 带 Passport 的 NodeJS 快速验证器