在提交时使用jQuery验证表单
当我点击我的提交按钮时,我有这个功能:在提交时使用jQuery验证表单,jquery,forms,validation,Jquery,Forms,Validation,当我点击我的提交按钮时,我有这个功能: $('#signup-button').click(function(event){ var username_check = validateUsernameField(); var email_check = validateEmailField(); var name_check = validateNameField(); var birthdate_c
$('#signup-button').click(function(event){
var username_check = validateUsernameField();
var email_check = validateEmailField();
var name_check = validateNameField();
var birthdate_check = validateBirthdateField();
event.preventDefault();
if(username_check && email_check && name_check && birthdate_check) {
alert('lol');
var formData = $('#FonykerAddForm').serialize();
$.ajax ({
type: 'POST',
url: '<?php echo $html->url('/fonykers/add',true); ?>',
data: formData,
dataType: 'json',
success: function(response) {
$( "#confirm-dialog" ).html(response.msg).dialog({
autoOpen: false,
modal: true,
height: 140,
title: response.title
});
$('#confirm-dialog').dialog('open');
},
error: function (xhr, ajaxOptions, thrownError){
alert('Cualquier vaina');
alert(xhr.statusText);
alert(thrownError);
}
});
}
});
$(“#注册按钮”)。单击(函数(事件){
var username_check=validateUsernameField();
var email_check=validateEmailField();
var name_check=validateNameField();
var birthdate_check=validateBithDateField();
event.preventDefault();
如果(用户名检查&电子邮件检查&姓名检查&生日检查){
警报(“lol”);
var formData=$('#FonykerAddForm').serialize();
$.ajax({
键入:“POST”,
url:“”,
数据:formData,
数据类型:“json”,
成功:功能(响应){
$(“#确认对话框”).html(response.msg).dialog({
自动打开:错误,
莫代尔:是的,
身高:140,
标题:response.title
});
$('确认对话框')。对话框('打开');
},
错误:函数(xhr、ajaxOptions、thrownError){
警报(“Cualquier vaina”);
警报(xhr.statusText);
警报(thrownError);
}
});
}
});
我以前在我的字段上调用了blur事件的validate方法,它们都可以工作,这里的验证似乎可以工作,问题是if语句没有发生任何事情之后,表单就不会提交了。有人知道为什么吗?如果没有,您能想出一个更好的方法在提交之前验证我的所有字段吗?我认为问题在于
事件.preventDefault()
如果您认为它阻止提交表单的默认操作将不起作用,那么,更好的选择是使用<代码>返回false;<代码>在您正在调用的每个函数中
e、 g问题是我在if语句中使用的变量有些返回未定义的,所以它搞砸了调用。我只是简单地将检查变量替换为检查DOM元素上的集合类,以查看它们是否有错误,并且工作正常。您是否尝试过在Firebug中设置断点并逐行检查。此外,您还可以尝试运行表单“提交”事件,例如$('form.my_form').submit(函数(){if($(this.find('input.my_input').val().length>20){return false;//return false防止表单提交}return true;//submit form});你是否检查过你的
是否为真?定义一个匹配的else{alert(!lol”);}
看看是否显示了它是否输入了else,这很奇怪,因为所有字段都标记为有效(确定后变为绿色)在firebug中运行时,我看到它们都被标记为未定义,除了生日检查。如果我不阻止默认设置,它将执行默认的POST操作,并且不会执行AJAX调用。
function validateUsernameField(){
if($("#UsernameField").val()=="") {
// your username actions
return false;
}
else
{
username_check = 1
return true;
}
}
if(username_check == 1 && email_check == 1 && name_check == 1 && birthdate_check == 1) {
alert('lol');
var formData = $('#FonykerAddForm').serialize();
$.ajax ({
type: 'POST',
data: formData,
dataType: 'json',
success: function(response) {
$( "#confirm-dialog" ).html(response.msg).dialog({
autoOpen: false,
modal: true,
height: 140,
title: response.title
});
$('#confirm-dialog').dialog('open');
},
error: function (xhr, ajaxOptions, thrownError){
alert('Cualquier vaina');
alert(xhr.statusText);
alert(thrownError);
}
});
}else{
alert ('There is something wrong');
return false;
}