填写完所有字段后立即执行ajax调用

时间:2011-06-29 18:39:10

标签: javascript jquery

所以我需要先检查所有字段:

<script type="text/javascript">
<!--
    $(document).ready(function(){
        $("#loginform").submit(function(){

LIKE:

        //CHECK INPUT
        $('#loginform :input:not(:button)').each(function(n,element){  
            if ($(element).val()=='') {
                $(".message").css('margin-top', '13px').html('<p>O campo '+element.id+' tem de ter um valor!</p>').fadeIn("slow").delay(2000).fadeOut(1000);
                return false;  
            }
        });

在所有字段填满后进行AJAX调用:

    //AJAX CALL
         $.post(...
         BLÁ BLÁ

    return false;

检查所有字段后如何提交值? 一如既往地感谢你。

更新:

解决方案“我找到了”。

首先在客户端验证。 第二次验证服务器端。

在第一项措施中,在所有字段都正常之前,会阻止几个ajax调用! 通过第二次“移动”,我们可以防止恶意。

非常感谢你。 我一直在和你学习:)

3 个答案:

答案 0 :(得分:1)

这是你想要的吗?

    var callAjax = true;

    //CHECK INPUT
    $('#loginform :input:not(:button)').each(function(n,element){  
        if ($(element).val()=='') {
            //Code then set bool
            callAjax = false;  
        }
    });

    if(callAjax){
    $.ajax( {
        url: "form action",
        type: "POST",
        data: $("#loginForm").serialize(),
    ....
    }

答案 1 :(得分:0)

如果你的意思是什么,最简单的方法是将表格数据输入你的ajax请求? 在表单上使用.serialize()方法,如:

$.ajax( {
    url: "form action",
    type: "POST",
    data: $("#loginForm").serialize(),
....

答案 2 :(得分:0)

// Add these to your onReady code
function checkFields() {
  var filledIn = true;
  $('#loginform :input:not(:button)').each(function(n,element){  
      if ($(element).val()=='') {
        filledIn = false;
        return false; // stop loop execution
     }
  });
  return filledIn;
}


$('#loginform :input:not(:button)').change(function() {
  if (checkFields()) {
    $.ajax( {
      url: "form action",
      type: "POST",
      data: $("#loginForm").serialize(),
      ....
    });
  }
})