2014-09-18 96 views
0

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

无法获取的财产“设置”值:对象是从哪儿部分观点被称为null或undefined

<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帖子有关。

+0

只有让文本框为空时才会出现此错误?这种验证在你的数字化过程中是实时的吗? – 2014-09-18 18:25:00

+0

验证第一次按预期工作,但是一旦我点击提交按钮并通过ajax调用添加数据,然后即使我点击任何文本框,我也会收到此错误。 – user2322507 2014-09-18 18:43:53

+0

是的,请显示HTML标记。您总是希望显示足够的代码来重现问题。 – Sparky 2014-09-18 18:53:47

回答

1

由于您没有在ajax提交后重新加载页面,请尝试使用插件提供的resetForm方法。虽然,我希望这可以反复工作,而不需要进行表单重置。错误信息对于您迄今向我们显示的内容也没有任何意义。

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

试试这个某处像你ajaxsuccess函数结束...

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

编辑

使用你的代码,我不能重现您描述的问题:

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

+0

我必须尝试一下,在你提供的链接中没有太多给出。你能解释一下它的作用吗? – user2322507 2014-09-18 19:00:47

+0

@ user2322507,它会重置验证器对象,就好像该页面是新加载的一样......删除所有错误消息等。但是,它不会消除您可能已经在字段中输入的任何值。 – Sparky 2014-09-18 19:02:54

+0

这听起来不错,我只能今天晚些时候尝试。 – user2322507 2014-09-18 19:09:27