zoukankan      html  css  js  c++  java
  • JQuery ajax提交表单及表单验证

    注:经过验证,formValidator只适合一个页面不超过一个表单的情况。

    本例实现功能:通过ajax提交表单,并在提交表单前对表单的数据进行验证。
    主要通过两个插件实现:
    第一个:
    jQuery Form Plugin
    http://jquery.malsup.com/form 主要功能是ajax提交表单

    第二个:jQuery formValidator 国产强大的表单验证插件。
    http://www.cnblogs.com/wzmaodong

    最简单的例子如下:

    Html代码 复制代码 收藏代码
    1. <html>  
    2. <head>  
    3. <title>Form</title>  
    4.   
    5. <!-- 引入jQuery -->  
    6. <script src="<?php echo base_url()?>style/jquery.js" type="text/javascript"></script>  
    7.   
    8. <!-- 引入jQuery formValidator -->  
    9. <link type="text/css" rel="stylesheet" href="<?php echo base_url()?>style/form_valide/style/validator.css"></link>  
    10. <script src="<?php echo base_url()?>style/form_valide/formValidator.js" type="text/javascript" charset="UTF-8"></script>  
    11. <script src="<?php echo base_url()?>style/form_valide/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>  
    12.   
    13. <!-- 引入jQuery Form Plugin -->  
    14. <script type="text/javascript" src="<?php echo base_url()?>style/ajax_form/jquery.form.js"></script>  
    15.   
    16. <script type="text/javascript">  
    17. $(document).ready(function(){   
    18.     //提供回调函数,提供提交返回结果的处理   
    19.     var options = {   
    20.         success:function(data) {   
    21.             alert(data);   
    22.         }};    
    23.        
    24.     //初始化验证插件,如果提交出错,则弹出对话框,如果正确,则通过ajax提交表单请求。   
    25.     $.formValidator.initConfig({   
    26.         formid:"form1",   
    27.         onerror:function(msg){alert(msg)},   
    28.         onsuccess:function(){$('#form1').ajaxSubmit(options); return false;}   
    29.     });   
    30.   
    31.     //表单验证   
    32.     $("#test1").formValidator({   
    33.         onshow:"请输入用户名,只有输入"maodong"才是对的",   
    34.         onfocus:"用户名至少6个字符,最多10个字符",   
    35.         oncorrect:"该用户名可以注册"})   
    36.         .inputValidator({min:6,max:10,onerror:"你输入的用户名非法,请确认"})   
    37.         .regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"});   
    38.   
    39. });   
    40. </script>  
    41.   
    42. </head>  
    43. <body>  
    44. <form action="<?php echo site_url("welcome/post")?>method="post" name="form1" id="form1">  
    45.         <td align="right">用户名:</td>  
    46.       <td><input type="text" name="test1"id="test1" style="120px" value="maodong" /></td>  
    47.       <td><div id="test1Tip" style="250px"></div></td>  
    48.      
    49.     <input type="submit" name="button" id="button" value="提交" />  
    50.      
    51. </form>  
    52. </body>  
    53. </html>  

    success回调函数不执行,可能是请求时候 出错了。调用success方法之前尝试着把服务器返回的数据解析成dataType格式,试一下 error:function(XMLResponse){alert(XMLResponse.responseText)}。

    如:

    var options={
    target:'#output1',  //把服务器返回内容放入id为output1的元素中
    beforeSubmit:showRequest, //提交前的回调函数
    success:showResponse,  //提交后的回调函数

    error:function(XMLResponse){alert(XMLResponse.responseText)},
    //url:url,   //默认是form的action,如果申明,则会覆盖
    //type:type,   //默认是form的method('get' or 'post'),如果申明,则会覆盖
    //dateType:null,  //'xml','script',or 'json'(接受服务端返回的类型)
    //clearForm:true,  //成功提交后,清除所有表单元素的值
    //resetForm:true,  //成功提交后,重置所有表单的值
    //timeout:3000   //限制请求的时间,当请求大于3秒后,跳出请求
    }

    ajaxForm 和 ajaxSubmit 的选项
    除了以下列出的选项,你也可以给这两个函数传递标准$.ajax的选项。

    target ———— 指定页面中的哪些元素用于响应服务器端的更新。这个值可以是jQuery查询字符串,或者它指定的jQuery对象,或者是DOM元素。默认值:null

    replaceTarget ———— 配合target选项使用。当被设置为true时,target指定的部分将被替换,否则只替换它的内容。默认值:false

    url ———— 指定数据要提交到的URL。默认值:表单的action属性值

    type ———— 指定表单提交的方式:’GET’或者’POST’。默认值:表单的method属性值(若无则为’GET’)

    data ———— 要同表单一起提交的额外数据,格式:data: { key1: ‘value1′, key2: ‘value2′ }

    dataType ———— 服务器响应的数据类型,值可以为:null, ‘xml’, ‘script’, 或者’json’。这个选项指定服务器端的响应如何处理。它直接映射到了jQuery.httpData方法。如果dataType为’xml’,则服务 器的响应将被看成是XML,’success’回调函数将被传入responseXML的值。如果dataType为’json’,则服务器的响应将被看 成是JSON对象(通过eval),并传给’success’回调函数。如果dataType为’script’,则服务器的响应将被eval成全局上下 文。默认值:null

    beforeSerialize ———— 表单序列化前的回调函数。它提供了一个机会以在值被获取前控制表单。其中的一个参数是表单的jQuery对象,另一个是传给ajaxForm/ajaxSubmit的选项对象。默认值:null

    beforeSerialize: function($form, options) {
        // 返回false将取消提交操作
    }
    beforeSubmit ———— 表单提交前的回调函数。一般用于处理表单提交前的逻辑,如验证表单数据。如果这个回调函数返回false,提交操作将被取消。它的三个参数分别是表单数据 组成的数组,表单的jQuery对象,传给ajaxForm/ajaxSubmit的选项对象。默认值:null

    beforeSubmit: function(arr, $form, options) {
        // 第一个参数的格式:
        // [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]

        // 返回false将取消提交操作
    }
    success ———— 表单被成功提交后,服务器端产生响应时的回调函数。它将被传入以下参数:

    1. responseText 或者 responseXML 的值(取决于dataType选项的值)

    2. statusText

    3. xhr(XMLHttpRequest对象)(若jQuery的版本小于1.4,则为jQuery封装过的表单元素)

    4. jQuery封装过的表单元素(若jQuery的版本小于1.4,则为undefined)

    默认值:null

    semantic ————— 指定提交的数据是否遵循语义上的顺序(较正常方式慢)。注意一般情况下表单的序列化都遵循语义上的顺序,除非有image类型的控件。只有当服务器对提交 的数据的语义上的顺序有严格要求而且表单含有image类型的控件时才设置为true。默认值:false

    resetForm ———— 当成功提交时是否重置表单。默认值:null

    clearForm ———— 当成功提交时是否清除表单。默认值:null

    iframe ———— 是否总是将服务器的响应放在iframe里面。默认值:false

    iframeSrc ———— 如果iframe选项为true,则要添加到iframe中的src属性。默认值:about:blank,使用https协议的页面的默认值为:javascript:false

    forceSync ———— 指定是否在上传文件或者使用iframe选项提交表单时去除短时间的延迟。这个延迟用于浏览器在进行原始的提交操作前渲染DOM。通过它给用户提示如”请稍候”,这改善了可用性。默认值:false

    选项示例:

    // 准备选项对象
    var options = {
        target:     '#divToUpdate',
        url:        'comment.php',
        success:    function() {
            alert('Thanks for your comment!');
        }
    };

    // 把选项对象传递给ajaxForm函数
    $('#myForm').ajaxForm(options);

  • 相关阅读:
    Laravel 进阶笔记 3
    Laravel 进阶笔记 5
    Laravel 进阶笔记 4
    Laravel 进阶笔记 2
    Laravel 进阶笔记
    Laravel笔记.
    Think PHP-- 笔记3
    git删除远程分支
    Think PHP 3.2.3 伪静态的方法
    解决iframe IE8透明不兼容
  • 原文地址:https://www.cnblogs.com/zoupufa/p/4211050.html
Copyright © 2011-2022 走看看