【发布时间】:2014-09-18 18:16:25
【问题描述】:
当我第二次尝试验证表单时,jQuery 验证不起作用。即使我点击任何文本框,我也会收到以下错误。
无法获取属性“设置”的值:对象为空或未定义
<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 帖子有关。
【问题讨论】:
-
只有让文本框为空才会出现这个错误?在您的数字化过程中,此验证是实时的?
-
验证第一次按预期工作,但是一旦我单击提交按钮并通过 ajax 调用添加数据,然后即使我单击任何文本框,我也会收到此错误。
-
是的,请显示 HTML 标记。您总是需要展示足够多的代码来重现该问题。
-
您是否有理由将
submitHandler的代码放入外部函数中?把所有的代码都放到submitHandler里行吗? -
您为什么认为错误来自该行?控制台应该准确地告诉您哪条线路触发了错误。因为
Unable to get value of the property 'settings'对您显示的代码毫无意义。
标签: jquery ajax asp.net-mvc-4 jquery-validate