1. 程式人生 > >jquery表單外掛 ---form

jquery表單外掛 ---form

jquery Form外掛是一個優秀的Ajax表單外掛,可以非常容易的、無侵入滴升級html表單以支援Ajax。jQUery Form有兩個核心方法——ajaxForm()和ajaxSubmit(),它們集合了從控制表單元素到如何管理提交程序的功能。另外外掛還有一些其它的方法:formToArray(),formSerialize(),fieldSerialize(),fieldValue(),clearFrom(),clearFialds()resetForm()等。

下載地址:點選開啟連結

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="js/jquery.form.js"></script>
</head>
<body>
    <form id="form">
        <input type="file" enctype="multipart/form-data" method ="post"/>
    </form>

    <form id="form_submit">
        賬號:<input type="text" name="name"/><br/>
        密碼:<input type="password" name="password"/><br/>
        <input type="submit" id="submit_test" value="提交"/>
    </form>
</body>
</html>

上述程式碼通過核心方法ajaxForm(),很容易將表單提升為ajax提交方式。

<script type="text/javascript">
    $("#form_submit").ajaxForm(function () {
        alert("登陸成功!!!");
    })
</script>

form外掛還有一個核心方法ajaxForm(),也能完成同樣功能。

 $("#form_submit").ajaxSubmit(function () {
        alert("登陸成功!!!");
    })

ajaxForm()方法和ajaxSubmit()方法引數

    ajaxForm()方法和ajaxSubmit()方法都能接收0個或1個引數。當為單個的引數時,該引數既可以是一個回撥函式,也可以是一個 options 物件。上面就是引數是回撥函式的例子,下面介紹 options 物件。

    首先定義一個物件 options,然後在物件裡設定引數。如:

    var options = {
        target : "#output1",            //把伺服器返回的內容放入 id 為 output 的元素中
        beforeSubmit : showRequest,     //提交前的回撥函式
        success : showResponse,         // 提交後的回撥函式
        url : url,                      //預設是form的action ,如果宣告則會覆蓋
        type : type ,                   //預設是form的method,如果宣告則會覆蓋
        dataType : null,                //'xml'、‘script’、‘json’(接受伺服器端的返回型別)
        clearForm : true,               //成功提交後,清除所有表單元素的值
        resetForm : true,               //成功提交後,重置所有表單元素的值
        timeout : 3000                  //限制請求時間,請求大於3秒後,跳出請求
 };

定義了 options物件之後,就可以把這個 options物件傳給ajaxForm()方法。如

$("#form_submit").ajaxForm(aptions);

或者傳遞給ajaxSubmit()方法。如:

$("#form_submit").ajaxSubmit(aptions);

在 options 裡指定了兩個回撥函式,即beforeSubmit :showRequest 和 success:showResponse.他們分別表單提交前和提交後被呼叫。

beforeSubmit ——提交前的回撥函式

    function showRequest(formData,jqForm,options){
        var queryString = $.param(formData);
        return true;
    }

這個回撥函式有3個引數。

    第一個 formData 是陣列物件,使用$.param()方法把愛轉化為字串,得到如下這種格式:

        name=tom&address=2

        需要注意的是,當表單提交時 form 外掛會議ajax方式自動提交這些資料。

    第二個引數 jqForm 是一個jquery物件 ,它封裝了表單元素。

        如果要訪問 jqForm 的 DOM 元素,可以吧 jqForm 轉為 DOM 物件。

    var formElement = jqForm[0];
    var address = formElement.address.value;
第三個引數 options 就是 option 物件。前面已經聲明瞭 options 物件裡的一些屬性,其他沒有聲
明的,則會使用預設屬性。
在這個表單中,只要不返回 false ,表單都被允許提交;如果返回 false ,則會阻止表單提交。可以
利用這個特性,在表單提交之前驗證資料,如果不符合驗證條件,則組織表單提交。

success——提交後的回撥函式

    提交後的回撥函式:

    function showResponse(responseText,statusText,xhr,$form) {
        alert("狀態:"+statusText+"\n 返回內容是:\n"+responseText);
    }

success 有四個引數:responseText、statusText、xhr、$form。其中 responseText 和 statusText 2個比較常用。

    statusText 只是返回一個狀態,例如 success error鄧。

    responseText 攜帶者伺服器返回的資料內容。responseText 會根據設定的 options 物件中的 dataType 屬性來返回相應格式的內容。具體情況如下:

    (1):對於預設的 HTML 返回,回掉函式的提一個引數是 XMLHttpRequest 物件的 responseText 屬性。

    (2):當 dataType 屬性設定為 xml 時,回掉函式的第一個引數是 XMLHttpRequest 物件的 responseXML 屬性。

    $("#form_submit").ajaxForm({
        dataType : 'xml',
        success : processxml
    });
    function processxml(responseXML) {
        var name = $('name',responseXML).text();
        var address = $('address',responseXML).text();
    }

    (3):當 dataType 屬性設定為 json 時,回掉函式的第一個引數是 從伺服器返回的 json 資料物件。

    $("#form_submit").ajaxForm({
        dataType : 'json',
        success : processJson
    });
    function processJson(data) {
        $("#output1").html(data.name+"  "+data.address);
    }