zoukankan      html  css  js  c++  java
  • jQuery插件 -- Form表单插件jquery.form.js

    jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地、无侵入地升级HTML表单以支持Ajax。jQuery Form有两个核心方法 -- ajaxForm() 和 ajaxSubmit(), 它们集合了从控制表单元素到决定如何管理提交进程的功能。另外,插件还包括其他的一些方法: formToArray()、formSerialize()、fieldSerialize()、fieldValue()、clearForm()、clearFields() 和 resetForm()等。

    下载地址: http://malsup.com/jquery/form/#download

    核心方法 -- ajaxForm() 和 ajaxSubmit()

    [javascript] view plain copy
    print?
    1. $('#myForm').ajaxForm(function() {     
    2.    $('#output1').html("提交成功!欢迎下次再来!").show();      
    3. });    
    4.          
    5. $('#myForm2').submit(function() {  
    6.    $(this).ajaxSubmit(function() {     
    7.       $('#output2').html("提交成功!欢迎下次再来!").show();      
    8.    });  
    9.    return false//阻止表单默认提交  
    10. });  
    通过Form插件的两个核心方法,都可以在不修改表单的HTML代码结构的情况下,轻易地将表单的提交方式升级为Ajax提交方式

    ajaxForm() 和 ajaxSubmit() 都能接受0个或1个参数,当为单个参数时,该参数既可以是一个回调函数,也可以是一个options对象,上面的例子就是回调函数,下面介绍options对象,使得它们对表单拥有更多的控制权

    [javascript] view plain copy
    print?
    1. var options = {  
    2.    target: '#output',          //把服务器返回的内容放入id为output的元素中      
    3.    beforeSubmit: showRequest,  //提交前的回调函数  
    4.    success: showResponse,      //提交后的回调函数  
    5.    //url: url,                 //默认是form的action, 如果申明,则会覆盖  
    6.    //type: type,               //默认是form的method(get or post),如果申明,则会覆盖  
    7.    //dataType: null,           //html(默认), xml, script, json...接受服务端返回的类型  
    8.    //clearForm: true,          //成功提交后,清除所有表单元素的值  
    9.    //resetForm: true,          //成功提交后,重置所有表单元素的值  
    10.    timeout: 3000               //限制请求的时间,当请求大于3秒后,跳出请求  
    11. }  
    12.   
    13. function showRequest(formData, jqForm, options){  
    14.    //formData: 数组对象,提交表单时,Form插件会以Ajax方式自动提交这些数据,格式如:[{name:user,value:val },{name:pwd,value:pwd}]  
    15.    //jqForm:   jQuery对象,封装了表单的元素     
    16.    //options:  options对象  
    17.    var queryString = $.param(formData);   //name=1&address=2  
    18.    var formElement = jqForm[0];              //将jqForm转换为DOM对象  
    19.    var address = formElement.address.value;  //访问jqForm的DOM元素  
    20.    return true;  //只要不返回false,表单都会提交,在这里可以对表单元素进行验证  
    21. };  
    22.   
    23. function showResponse(responseText, statusText){  
    24.    //dataType=xml  
    25.    var name = $('name', responseXML).text();  
    26.    var address = $('address', responseXML).text();  
    27.    $("#xmlout").html(name + "  " + address);  
    28.    //dataType=json  
    29.    $("#jsonout").html(data.name + "  " + data.address);  
    30. };  
    31.   
    32. $("#myForm").ajaxForm(options);  
    33.   
    34. $("#myForm2").submit(funtion(){  
    35.    $(this).ajaxSubmit(options);  
    36.    return false;   //阻止表单默认提交  
    37. });  

    表单提交之前进行验证:  beforeSubmit会在表单提交前被调用,如果beforeSubmit返回false,则会阻止表单提交

    [javascript] view plain copy
    print?
    1. beforeSubmit: validate  
    2. function validate(formData, jqForm, options) { //在这里对表单进行验证,如果不符合规则,将返回false来阻止表单提交,直到符合规则为止  
    3.    //方式一:利用formData参数  
    4.    for (var i=0; i < formData.length; i++) {  
    5.        if (!formData[i].value) {  
    6.             alert('用户名,地址和自我介绍都不能为空!');  
    7.             return false;  
    8.         }  
    9.     }   
    10.   
    11.    //方式二:利用jqForm对象  
    12.    var form = jqForm[0]; //把表单转化为dom对象  
    13.       if (!form.name.value || !form.address.value) {  
    14.             alert('用户名和地址不能为空,自我介绍可以为空!');  
    15.             return false;  
    16.       }  
    17.   
    18.    //方式三:利用fieldValue()方法,fieldValue 是表单插件的一个方法,它能找出表单中的元素的值,返回一个集合。  
    19.    var usernameValue = $('input[name=name]').fieldValue();  
    20.    var addressValue = $('input[name=address]').fieldValue();  
    21.    if (!usernameValue[0] || !addressValue[0]) {  
    22.       alert('用户名和地址不能为空,自我介绍可以为空!');  
    23.       return false;  
    24.    }  
    25.   
    26.     var queryString = $.param(formData); //组装数据  
    27.     //alert(queryString); //类似 : name=1&add=2    
    28.     return true;  
    29. }  


  • 相关阅读:
    第36课 经典问题解析三
    第35课 函数对象分析
    67. Add Binary
    66. Plus One
    58. Length of Last Word
    53. Maximum Subarray
    38. Count and Say
    35. Search Insert Position
    28. Implement strStr()
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/jpfss/p/8963662.html
Copyright © 2011-2022 走看看