Jquery表单提交问题

时间:2013-03-28 21:07:31

标签: jquery jquery-validate form-submit

我有一个简单的几个html控件的表单。我想在ajax jquery中将数据保存到mysql。但它没有总结它。我试过的是

$('#myForm').ajaxForm({

          beforeSubmit : function() { 

          var lookup          = true;

          var validate        = false;
          $.ajax({

             async: false,

             url: 'user.php?username='+$('#username').val(),

             success: function(data) { }

         })
 validate =  $("#myForm").validate({rules: { price: { number: true, }, size: { number: true, }} , errorClass: 'form_fields_error',  errorPlacement: function(error, element) {}}).form() ;
if(lookup && validate ){

                return true;

            }

            else{

                return true;

            }

          },
       target: '#showdata',

          success: function() { }

        });

      });

    $("#myForm").submit(function()
  {

 alert('this is not fired');
//e.preventDefault();
var formData = $(this).serialize();

$.ajax(
{
    type:'post',
    url:'administration/save_users.php',
    data:formData,
    beforeSend:function()
    {
       // launchpreloader();
    },
    complete:function()
    {
       // stopPreloader();
    },
    success:function(result)
    {
         alert(result);
    }

});

});

表单提交未被解雇...我错过了什么?我有表格动作=“#”....

1 个答案:

答案 0 :(得分:1)

根据您的代码,大概您正在使用jQuery Validate plugin

validate =  $("#myForm").validate({rules: { price: { number: true, }, size: { number: true, }} , errorClass: 'form_fields_error',  errorPlacement: function(error, element) {}}).form() ;

您的代码混乱了多个ajax调用和多余的submit处理程序。格式不佳的事实并没有帮助我们解开和排除故障。

As per the jQuery Validate documentation

  

submitHandler ,回调,默认:默认(原生)表单提交

回复处理表单时的实际提交   已验证。获取表单作为唯一参数。替换默认值   提交。 通过Ajax提交表单的正确位置   验证

这意味着您应该将ajax放在插件的submitHandler回调函数中。

您...

  • 不需要使用submit处理程序(这是内置于插件中)

  • 不需要在提交/点击之前/期间测试表单的有效性(这也是内置于插件中)

尝试这样做......

请参阅DEMO:http://jsfiddle.net/zuXYR/

$(document).ready(function () {

    $('#myForm').validate({ // initialize the plugin
        rules: { 
            price: { 
                number: true 
            }, 
            size: { 
                number: true
            }
        }, 
        errorClass: 'form_fields_error',  
        errorPlacement: function(error, element) {
            // return false;  // this will suppress errors
            error.insertAfter(element); // the default function
        },
        submitHandler: function (form) {
            // your ajax code here
            return false; // required when using ajax to prevent a page reload
        }
    });

});

另外,我不确定为什么你希望你的errorPlacement回调函数为空。如果要取消错误消息,请使用return false。否则,如果您想使用默认行为,请完全忽略errorPlacement回调。