ajaxForm
和 ajaxSubmit
都支持大量的可选参数,它们通过可选参数项对象传入。可选参数项对象只是一个简单的 JavaScript对象,里边包含了一些属性和一些值:
null
url
表单提交的地址。
缺省值: 表单的
action
的值
type 表单提交的方式,'GET' 或 'POST'. 缺省值: 表单的
method
的值 (如果没有指明则认为是 'GET')
beforeSubmit 表单提交前执行的方法。这个可以用在表单提交前的预处理,或表单校验。如果'beforeSubmit'指定的函数返回false,则表单不会被提交。 'beforeSubmit'函数调用时需要3个参数:数组形式的表单数据,jQuery 对象形式的表单对象,可选的用来传递给ajaxForm/ajaxSubmit 的对象。 数组形式的表单数据是下面这样的格式:
[{name:uname,value:test},{name:upassword,value:password}]
缺省值: null
success 当表单提交后执行的函数。 如果'success' 回调函数被指定,当server端返回对表单提交的响应后,这个方法就会被执行。 responseText 和 responseXML 的值会被传进这个参数 (这个要依赖于dataType的类型). 缺省值:
null
dataType
指定服务器响应返回的数据类型。其中之一: null, 'xml', 'script', 或者 'json'. 这个
dataType
选项用来指示你如何去处理server端返回的数据。 这个和
jQuery.httpData
方法直接相对应。 下面就是可以用的选项:
'xml': 如果 dataType == 'xml' 则 server 端返回的数据被当作是 XML 来处理, 这种情况下'success'指定的回调函数会被传进去 responseXML 数据
'json': 如果 dataType == 'json' 则server端返回的数据将会被执行,并传进'success'回调函数
'script': 如果 dataType == 'script' 则server端返回的数据将会在上下文的环境中被执行
缺省值:
null
semantic
一个布尔值,用来指示表单里提交的数据的顺序是否需要严格按照语义的顺序。一般表单的数据都是按语义顺序序列化的,除非表单里有一个
type="image"
元素. 所以只有当表单里必须要求有严格顺序
并且表单里有
type="image"
时才需要指定这个。
缺省值:
false
resetForm
布尔值,指示表单提交成功后是否需要重置。
缺省值:
null
clearForm
布尔值,指示表单提交成功后是否需要清空。
缺省值:
null
iframe
布尔值,用来指示表单是否需要提交到一个iframe里。 这个用在表单里有file域要上传文件时。更多信息请参考
代码示例 页面里的
File Uploads 文档。
缺省值:
false
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script>
<script type="text/javascript" src="http://malsup.github.com/jquery.form.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var options = {
//target: '#output1', // target element to update
dataType :'json',
beforeSubmit: showRequest, // pre-submit callback
success: showResponse // post-submit callback
};
$("#basicForm").ajaxForm(options);
});
function showRequest(formData,jqForm,options){
var queryString = $.param(formData);
alert('About to submit: \n\n' + queryString);
return true;
}
function showResponse(responseText, statusText, xhr, form){
alert('status: ' + statusText + '\n\nresponseText: \n' + responseText.message +
'\n\nThe output div should have already been updated with the responseText.');
}
</script>
</head>
<body>
<b>基本表单测试</b>
<hr/>
<form action="upload.php" id="basicForm" method="post">
名称:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="text" name="message" ><br/>
喜欢颜色:<br/>
<select multiple="multiple" size="5" name="color[]" style="width:100px;">
<option value="red">红色</option>
<option value="black">黑色</option>
<option value="yellow">黄色</option>
<option value="green">绿色</option>
<option value="blue">绿色</option>
<option value="purple">紫色</option>
</select><br/>
性别:<input type="radio" name="sex" value="1"/>男<input type="radio" name="sex" value="2"/>女<br/>
爱好:<input type="checkbox" name="love" value="lanqiu"/>篮球<input type="checkbox" name="love" value="zuqiu"/>足球<input type="checkbox" name="love" value="kandianying"/>看电影<br/>
简介:<textarea rows="5" cols="30" name="intro"></textarea><br/>
<input type="submit" value="提交" >
</form>
<div id="output1" style="display: none;">AJAX response will replace this content.</div>
</body>
upload.php
echo json_encode(array('message'=>$_REQUEST['message']));
下面代码为验证表单:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script>
<script type="text/javascript" src="http://malsup.github.com/jquery.form.js"></script>
<script type="text/javascript" src="../js/jquery.validate.js"></script>
<script type="text/javascript" src="../js/jquery.metadata.js" ></script>
<script type="text/javascript">
$(document).ready(function(){
$("#validationForm").validate();
$("#validationForm").ajaxForm({
beforeSubmit:validate
});
});
function validate(formData,jqForm,options){
//formData is an array of objects representing the name and value of each field
//[{name:uname,value:test},{name:upassword,value:password}]
/*for( var i=0;i<formData.length;i++ ){
if( !formData[i].value ){
alert(formData[i].name+"不能为空~");
return false;
}
}*/
var form=jqForm[0];
if( form.uresetpassword.value != form.upassword.value ){
alert("密码和重置密码必须一致");
return false;
}
}
</script>
</head>
<body>
<b>验证表单</b>
<form action="validation.php" id="validationForm" method="post">
UserName:<input type="text" name="uname" class="{required:true,minlength:2,maxlength:6,messages:{required:'必须填写',minlength:'最小长度为2',maxlength:'最大长度必须小于20'}}"/><br/>
Password:<input type="password" name="upassword" class="{required:true,messages:{required:'必须填写'}}"/><br/>
resetPassword:<input type="password" name="uresetpassword" class="{required:true,messages:{required:'必须填写'}}" /><br/>
email:<input type="text" class="{required:true, email:true, messages:{required:'必须填写邮箱地址', email:'请填写正确的游戏地址'}}"><br/>
<input type="submit" value="提交">
</form>
</body>