Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4188622
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: JavaScript

2014-08-15 09:58:14

如今ajax满天飞,作为重点的form自然也受到照顾。

其实,我们在平常使用Jquery异步提交表单,一般是在submit()中,使用$.ajax进行。比如:

 
 $(function(){
        $('#myForm').submit(function(){
            $.ajax({
                url:"/WebTest/test/testJson.do",
                data:$('#myForm').serialize(),
                dataType:"json",
                error:function(data){
                    alert(data);
                },
                success:function(data){
                    alert(data);
                }
            });
        });        
    }) 
 

这样的方式掩盖了form的功能,使它成为了变相的ajax。下面来看看符合form思想的ajaxForm。

 

ajaxForm:

先下载:http://files.cnblogs.com/china-li/jquery.form.js

两个主要的API:ajaxForm() ajaxSubmit()。

ajaxForm()配置完之后,并不是马上的提交,而是要等submit()事件,它只是一个准备。一般用法:

 
$(document).ready(function() { var options = { 
        target: '#output1', // target element(s) to be updated with server response  beforeSubmit:  showRequest, // pre-submit callback  success:       showResponse // post-submit callback  // other available options:  //url:       url         // override for form's 'action' attribute  //type:      type        // 'get' or 'post', override for form's 'method' attribute  //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)  //clearForm: true        // clear all form fields after successful submit  //resetForm: true        // reset the form after successful submit  // $.ajax options can be used here too, for example:  //timeout:   3000   }; // bind form using 'ajaxForm'  $('#myForm1').ajaxForm(options).submit(function(){return false;}); 
});
 

这个是官方的例子,不过他没有最后的提交。提交中返回false,阻止它的默认提交动作,而是用ajax交互。

其中options的属性,重要的解释一下:

 
target        返回的结果将放到这个target下
url           如果定义了,将覆盖原form的action
type          get和post两种方式
dataType      返回的数据类型,可选:json、xml、script
clearForm     true,表示成功提交后清除所有表单字段值
resetForm     true,表示成功提交后重置所有字段
iframe        如果设置,表示将使用iframe方式提交表单
beforeSerialize    数据序列化前:function($form,options){}
beforeSubmit  提交前:function(arr,$from,options){}
success       提交成功后:function(data,statusText){}
error         错误:function(data){alert(data.message);} 
 

 ajaxSubmit示例:

 
$(document).ready(function() { var options = { 
        target:        '#output2', // target element(s) to be updated with server response  beforeSubmit:  showRequest, // pre-submit callback  success:       showResponse // post-submit callback  // other available options:  //url:       url         // override for form's 'action' attribute  //type:      type        // 'get' or 'post', override for form's 'method' attribute  //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)  //clearForm: true        // clear all form fields after successful submit  //resetForm: true        // reset the form after successful submit  // $.ajax options can be used here too, for example:  //timeout:   3000  }; // bind to the form's submit event  $('#myForm2').submit(function() { // inside event callbacks 'this' is the DOM element so we first  // wrap it in a jQuery object and then invoke ajaxSubmit  $(this).ajaxSubmit(options); // !!! Important !!!  // always return false to prevent standard browser submit and page navigation  return false; 
    }); 
}); 
 

其中参数配置大同小异。只是ajaxSubmit()可以任何时刻都能提交!

 

其他的API: 

 
$('#myFormId').clearForm();
$('#myFormId .specialFields').clearFields();
$('#myFormId').resetForm(); var value = $('#myFormId :password').fieldValue(); var queryString = $('#myFormId .specialFields').fieldSerialize();


原文地址: 
阅读(4978) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~