jQuery验证只能工作一次

时间:2014-09-18 18:16:25

标签: jquery ajax asp.net-mvc-4 jquery-validate

当我第二次尝试验证表单时,jQuery验证功能不起作用。即使我点击任何文本框,我也会收到以下错误。

  

无法获取属性的值'设置':对象为null或未定义

<form id="myForm" action="">

     <input type="text" id="input1" name="input1" />
     <input type="text" id="input2" name="input2" />

     <button id="submit" name="submit">   
     </button>

</form>

<script type="text/javascript">

    $('#myForm').validate({

        rules: {
            input1: "required",
            input2: "required",
            agree: "required"
        },

        submitHandler: function (form) {
            MyFunction(); // i somehow believe the problem could be here, i have added the code below
        }
    });

function MyFunction() {

    var firstname = $('#input1').val();
    var lastname = $('#input2').val();

    $.ajax({
        type: "POST",
        url: '@Url.Action("AddCustomer", "MyController")',
        data: "{'FirstName': '" + firstname + "','LastName': '" + lastname + "'}",
        dataType: 'text',
        success: function (msg) {

            $('#myDiv').html(msg);
        },
        error: function (result) {
            alert("Error");
        }
    });

}

</script>               

调用局部视图的主视图。

<div id="parentDiv">
    @Html.Action("ActionName", "ControllerName") //the action calls the Partial View
</div>

该功能正常。但是,我需要添加任何内容,以便验证第二次工作。

form很简单,包含一些文本框和提交按钮。 form位于部分视图中,如果这会产生任何差异。

如果我还需要添加HTML标记,请告诉我。虽然我认为它与AJAX帖子有关。

1 个答案:

答案 0 :(得分:1)

由于您在提交ajax后未重新加载页面,请尝试使用插件提供的resetForm方法。虽然,我希望这可以重复工作,而无需重置表单。对于您迄今为止向我们展示的内容,错误消息也毫无意义。

http://jqueryvalidation.org/Validator.resetForm/

ajax success函数结束时尝试此操作...

$('#myForm').validate().resetForm();

修改

使用您的代码,我无法重现您描述的问题:

http://jsfiddle.net/quyzu00h/3/