我有一个包含两个字段的表单,我尝试使用ajax提交。我有jquery form validator插件,适用于所有其他形式。当我尝试ajax提交时,验证似乎不起作用。我使用的是:
$("#add-edit-template").click( function(event)
{
var x;
x = $('.sp-preview-inner').css('backgroundColor');
if(x)
{
hexc(x);
$('#addEditTemplateForm').append("<input type='hidden' name='templateColor' value='"+ color+"' />");
}
$("#addEditTemplateForm").submit(function(e)
{
e.preventDefault();$("div#divLoading").addClass('show');
var postData = $("#addEditTemplateForm").serializeArray();
var formURL = $(this).attr("action");
$.ajax(
{
url : formURL,
type: "POST",
data : postData,
dataType : "html",
success:function(htmlData)
{
$('#ph_widgets').replaceWith(htmlData);
$("#templateSuccess").show();
$("#phButtons").show();
$('#listWidgets').dataTable({"iDisplayLength" : 25, "aaSorting": []});
initDraggabletable("#selectedWidgetTable");
},
error: function( xhr, status, errorThrown )
{
console.log( "Error: " + errorThrown );
console.log( "Status: " + status );
console.dir( xhr );
},
});
$("div#divLoading").removeClass('show');
e.preventDefault(); //STOP default action
});
});
我需要点击功能,因为我从div获取值,这对我来说也是必需的。我试着添加
$.validate
({
form : '#addEditTemplateForm'
})
在点击之后以及在ajax调用之前,但是提交没有被阻止,并且验证没有阻止。我在网上找到了解决方案,但对我来说没有任何效果。有没有办法解决这个问题...提前谢谢
答案 0 :(得分:1)
做这样的事情:
您的onclick功能:
$("#add-edit-template").click(function(event) {
var x;
x = $('.sp-preview-inner').css('backgroundColor');
if (x) {
hexc(x);
$('#addEditTemplateForm').append("<input type='hidden' name='templateColor' value='" + color + "' />");
}
$("#addEditTemplateForm").submit(); // trigger submit
});
使用回调函数进行验证
$.validate({
form : '#addEditTemplateForm',
onSuccess : function($form) {
// if your form is valid
$("div#divLoading").addClass('show');
var postData = $("#addEditTemplateForm").serializeArray();
var formURL = $(this).attr("action");
$.ajax({
url: formURL,
type: "POST",
data: postData,
dataType: "html",
success: function(htmlData) {
$('#ph_widgets').replaceWith(htmlData);
$("#templateSuccess").show();
$("#phButtons").show();
$('#listWidgets').dataTable({
"iDisplayLength": 25,
"aaSorting": []
});
initDraggabletable("#selectedWidgetTable");
},
error: function(xhr, status, errorThrown) {
console.log("Error: " + errorThrown);
console.log("Status: " + status);
console.dir(xhr);
},
}).always({
$("div#divLoading").removeClass('show');
});
return false; // Will stop the submission of the form
}
})
您可以看到很多回调here
答案 1 :(得分:0)
你试过吗,
$("#add-edit-template").click( function()
{
var x;
x = $('.sp-preview-inner').css('backgroundColor');
if(x)
{
hexc(x);
$('#addEditTemplateForm').append("<input type='hidden' name='templateColor' value='"+ color+"' />");
}
var isValid = false;
var found = false;
$("#addEditTemplateForm").on('validation', function(evt, valid)
{
if(!valid)
{
found = false;
console.log('found'+found);
}
if(found)
{
$("#addEditTemplateForm").submit(function(e)
{
$(".alert").hide();
e.preventDefault();
$("div#divLoading").addClass('show');
var postData = $("#addEditTemplateForm").serializeArray();
var formURL = $(this).attr("action");
$.ajax(
{
url : formURL,
type: "POST",
data : postData,
dataType : "html",
success:function(htmlData)
{
$('#ph_widgets').replaceWith(htmlData);
$("#templateSuccess").show();
$("#phButtons").show();
$('#listWidgets').dataTable({"iDisplayLength" : 25, "aaSorting": []});
initDraggabletable("#selectedWidgetTable");
$("div#divLoading").removeClass('show');
},
error: function( xhr, status, errorThrown )
{
console.log( "Error: " + errorThrown );
console.log( "Status: " + status );
console.dir( xhr );
},
});
e.preventDefault(); //STOP default action
});
}
});
});