大家好我有问题,我正在做一个AJAX回调:
var htmlToInject;
function Next(step) {
var options = {
cache: false,
type: "POST",
url: "Page.aspx?Page=" + step,
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (result) {
htmlToInject = result;
},
error: function (jqXHR, textStatus, errorThrown) {
},
complete: function (jqXHR, textStatus) {
$("#form1").empty();
$("#form1").append(htmlToInject);
}
};
$.ajax(options);
}
但问题出在我使用jQuery验证方法的地方,我正在动态创建控件。因此回调不会导致回发,因此不会生成控件,我通过这样做解决了这个问题:
$("#form1").empty();
$("#form1").append(htmlToInject);
然后显示新生成的控件。
但是对字段的验证给了我错误:'settings'为空。
我看了一下页面源代码,源代码就是之前生成的控件。我不想回发,因为我不想要“加载”效果,因此我使用ajax。
我怎么能过来这个问题呢?
非常感谢提前。
答案 0 :(得分:0)
如果您正在使用不显眼的ajax,您可以在适当的情况下在成功/完成功能中执行此操作:
$('#form1').html(htmlToInject);
$.validator.unobtrusive.parse('#form1');
答案 1 :(得分:0)
我看了一下页面源代码,源代码就在那里 以前生成的控件。
如果您正在谈论右键单击 - >查看源代码,那么当您使用常规POST / GET加载页面时,它会显示从服务器获取的HTML(某些浏览器甚至可能会向服务器重复请求以获取它)。如果您想查看JS / AJAX所做的更改 - 您需要使用开发人员工具。所有现代浏览器都有。 FireFox可能需要安装Firebug。只需按F12即可查看这些工具。
但是对字段的验证给了我错误:'设置'是空的。
更改表单内容后,我没有看到任何验证初始化代码:
complete: function (jqXHR, textStatus) {
$("#form1").empty();
$("#form1").append(htmlToInject);
}
在放置新表单元素后,您应该再次添加$("#form1").validate({...})
(或初始化验证插件的方式)。