2011-07-21 157 views
0

我有这样的功能,当我点击我的提交按钮:验证形式与jQuery上提交

$('#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); 
        } 
       }); 
      } 
     }); 

我以前叫上我的领域模糊事件的验证方法,他们所有的工作和验证在这里似乎工作,问题是在if语句没有任何反应之后,表单不会被提交。有人知道为什么吗?如果没有,你可以想一个更好的方式来验证提交之前我所有的领域?

+0

你有没有尝试把一个断点在Firebug的,并通过行由行步进。此外,您可以尝试在表单的“提交”事件上运行,例如$( 'form.my_form')提交(函数(){ 如果($(本).find( 'input.my_input')VAL()长度> 20){ 返回假; //返回false以防止提交表单 } 回归真实的; //提交表单 }); – ghayes

+0

你有没有检查过你'如果'有'真'? – Rafay

+0

定义匹配'其他{警报(“笑!”);}'看看是否显示 – Rafay

回答

0

问题是我在if语句中使用的变量有些返回undefined,所以它搞砸了调用。我简单地替换检查变量来检查我的DOM元素上的设置类,看看他们是否有错误,并且工作正常。

-1

我认为这个问题是event.preventDefault()

如果你认为它会阻止提交表单是行不通的默认操作,因此,一个更好的选择将是你调用每个函数中使用return false;

例如

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; 
} 
+0

如果我不阻止默认情况下它会做的默认POST行动,将不执行AJAX调用。 – 8vius

+0

downvote是不必要的@ 8vius。 –