Jquery 验证是否不适用于使用Ajax填充的对话框
我在这里和其他地方尝试了无数的建议,但没有任何效果,所以请大家了解我的代码失败的原因 Ajax调用创建的html是(选择的内容是隐藏的,但所有内容都正确关闭)Jquery 验证是否不适用于使用Ajax填充的对话框,jquery,ajax,dialog,jquery-validate,Jquery,Ajax,Dialog,Jquery Validate,我在这里和其他地方尝试了无数的建议,但没有任何效果,所以请大家了解我的代码失败的原因 Ajax调用创建的html是(选择的内容是隐藏的,但所有内容都正确关闭) 我看到您正在调用$('#addcont')。请验证(…)两次。您不能多次调用它 .validate()方法仅用于初始化表单上的插件。.validate()方法是放置选项的地方。您不能多次调用它,因此您不能通过再次调用来添加、覆盖或删除选项。随后的调用将被忽略 调用.validate()时,表单的HTML必须已经存在。在大多数情况下,它是
我看到您正在调用
$('#addcont')。请验证(…)
两次。您不能多次调用它
方法仅用于初始化表单上的插件。.validate()
方法是放置选项的地方。您不能多次调用它,因此您不能通过再次调用来添加、覆盖或删除选项。随后的调用将被忽略.validate()
- 调用
时,表单的HTML必须已经存在。在大多数情况下,它是在DOM就绪事件处理程序中调用的。在动态创建表单的情况下,会在创建表单的HTML后立即调用它.validate()
.validate()
方法和选项按钮:
选项中的.validate()
方法。由于validate插件会自动捕获submit按钮,因此不需要做任何特殊的操作
只需将已删除的
.validate()
中的验证规则和选项复制到末尾的.validate()
方法中。关于动态创建表单以及使用parent()和appendTo()在DOM中移动对话框,有很多建议但最后我回到了,并决定将验证声明和触发保留在对话框按钮中,但以编程方式进行
我使用要检查的表单id设置了一个变量,然后使用if语句在验证成功时发送表单。无论它存在于DOM中的任何地方,这都会以某种方式起作用,所以一只快乐的兔子。至少我能理解发生了什么事
$(document).ready(function(){
$(document).on('click','a.addcontr', function (e) {
e.preventDefault();
var organid=$('#basinf').attr("parn");
var usrd = $('#basinf').attr("pare");
var dbextn = $('#basinf').attr("dbextn");
var parf = $('#basinf').attr("parf");
var $tag = $("<div id='adc'><img src='images/loading.gif'></div>");
$.post("ajax/createContractor.php",
{organid: organid, dbextn: dbextn, parf: parf},
function(data) {
$tag.html(data).dialog({
autoOpen: false, title: "Adding a contractor",
width: 540,
modal: true,
buttons: {
"Add Contractor" : function() {
var validator=$('#addcont').validate({
rules:{
full_name: "required",
locat_name: "required",
address1:"required",
town:"required",
postcode:"required"
},
messages: {
full_name: " Enter name of organisation",
locat_name: " Enter location name",
address1: " Enter address",
town: " Enter town or city",
postcode: " Enter postcode"}
});
if(validator.form()){$.post("ajax/insContractor.php",$('#addcont').serialize(),function(data){
$( '#adc' ).dialog( "close" );
});}
},
"Cancel": function() {
$( this ).dialog( "close" );
}
},
close: function() {$('#addcont').remove();
$('#adc').remove();
},
}).dialog('open');
});
});
$(文档).ready(函数(){
$(文档).on('click','a.addcontr',函数(e){
e、 预防默认值();
var organid=$('#basinf').attr(“parn”);
var usrd=$('#basinf').attr(“pare”);
var dbextn=$('#basinf').attr(“dbextn”);
var parf=$('#basinf').attr(“parf”);
var$tag=$(“”);
$.post(“ajax/createContractor.php”,
{organid:organid,dbextn:dbextn,parf:parf},
功能(数据){
$tag.html(数据).dialog({
自动打开:false,标题:“添加承包商”,
宽度:540,
莫代尔:是的,
按钮:{
“添加承包商”:函数(){
var验证程序=$('#addcont')。验证({
规则:{
全名:“必选”,
locat_名称:“必需”,
地址1:“必需”,
城镇:“必选”,
邮政编码:“必填”
},
信息:{
全名:“输入组织名称”,
地点名称:“输入地点名称”,
地址1:“输入地址”,
城镇:“进入城镇或城市”,
邮政编码:“输入邮政编码”}
});
if(validator.form()){$.post(“ajax/insContractor.php”),$('#addcont').serialize(),函数(数据){
$('#adc')。对话框(“关闭”);
});}
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
},
关闭:函数(){$('#addcont').remove();
$('#adc')。删除();
},
}).对话框(“打开”);
});
});
})) 创建一个JSFIDLE,否则,我认为不会有太多人愿意深入研究如此复杂的问题。我确实尝试过按照您的建议移动它,但这是一条死胡同,我确实考虑过构建一个JSFIDLE,创建了一个帐户等,但作为一个新手,它发现它完全太混乱,无法复制对话框的ajax交付,然后进行验证。所以我继续打猎和尝试,日子一天天过去。。。。
$(document).ready(function(){
$('.nextbut').hide();
$(document).on('click','a.addcontr', function (e) {
e.preventDefault();
var organid=$('#basinf').attr("parn");
var usrd = $('#basinf').attr("pare");
var dbextn = $('#basinf').attr("dbextn");
var parf = $('#basinf').attr("parf");
var $tag = $("<div id='adc'><img src='images/loading.gif'></div>");
$.post("ajax/createContractor.php",
{organid: organid, dbextn: dbextn, parf: parf},
function(data) {
$tag.html(data).dialog({autoOpen: false, title: "Adding a contractor",
width: 540,
modal: true,
buttons: {
"Add Contractor" : function() { $('#addcont').validate({debug: true ,
rules:{
full_name: "required",
locat_name: "required",
address1:"required",
town:"required",
postcode:"required"
},
messages: {
full_name: " Enter name of organisation",
locat_name: " Enter location name",
address1: " Enter address",
town: " Enter town or city",
postcode: " Enter postcode"},
submitHandler:function(){$.post("ajax/insContractor.php",$('#addcont').serialize(),function(data){
$( '#adc' ).dialog( "close" );});}
});
},
"Cancel": function() {
$( this ).dialog( "close" );
}
},
close: function() {$('#addcont').remove();
$('#adc').remove();
}}).dialog('open');
});$('#addcont').validate();
});
});
function(event, ui){$('#addcont').validate();}, just after modal: true,
$(document).ready(function(){
$(document).on('click','a.addcontr', function (e) {
e.preventDefault();
var organid=$('#basinf').attr("parn");
var usrd = $('#basinf').attr("pare");
var dbextn = $('#basinf').attr("dbextn");
var parf = $('#basinf').attr("parf");
var $tag = $("<div id='adc'><img src='images/loading.gif'></div>");
$.post("ajax/createContractor.php",
{organid: organid, dbextn: dbextn, parf: parf},
function(data) {
$tag.html(data).dialog({
autoOpen: false, title: "Adding a contractor",
width: 540,
modal: true,
buttons: {
"Add Contractor" : function() {
var validator=$('#addcont').validate({
rules:{
full_name: "required",
locat_name: "required",
address1:"required",
town:"required",
postcode:"required"
},
messages: {
full_name: " Enter name of organisation",
locat_name: " Enter location name",
address1: " Enter address",
town: " Enter town or city",
postcode: " Enter postcode"}
});
if(validator.form()){$.post("ajax/insContractor.php",$('#addcont').serialize(),function(data){
$( '#adc' ).dialog( "close" );
});}
},
"Cancel": function() {
$( this ).dialog( "close" );
}
},
close: function() {$('#addcont').remove();
$('#adc').remove();
},
}).dialog('open');
});
});