⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jquery.form.js

📁 WordPress是一个Blog程序,用它你可以架设完全属于你自己的Blog. 而WordPress现在的应用又不仅仅只是在Blog方面,因为其强大的扩展性,部分网站甚至已经开始使用WordPress
💻 JS
📖 第 1 页 / 共 3 页
字号:
/* * jQuery Form Plugin * version: 2.02 (12/16/2007) * @requires jQuery v1.1 or later * * Examples at: http://malsup.com/jquery/form/ * Dual licensed under the MIT and GPL licenses: *   http://www.opensource.org/licenses/mit-license.php *   http://www.gnu.org/licenses/gpl.html * * Revision: $Id$ */ (function($) {/** * ajaxSubmit() provides a mechanism for submitting an HTML form using AJAX. * * ajaxSubmit accepts a single argument which can be either a success callback function * or an options Object.  If a function is provided it will be invoked upon successful * completion of the submit and will be passed the response from the server. * If an options Object is provided, the following attributes are supported: * *  target:   Identifies the element(s) in the page to be updated with the server response. *            This value may be specified as a jQuery selection string, a jQuery object, *            or a DOM element. *            default value: null * *  url:      URL to which the form data will be submitted. *            default value: value of form's 'action' attribute * *  type:     The method in which the form data should be submitted, 'GET' or 'POST'. *            default value: value of form's 'method' attribute (or 'GET' if none found) * *  data:     Additional data to add to the request, specified as key/value pairs (see $.ajax). * *  beforeSubmit:  Callback method to be invoked before the form is submitted. *            default value: null * *  success:  Callback method to be invoked after the form has been successfully submitted *            and the response has been returned from the server *            default value: null * *  dataType: Expected dataType of the response.  One of: null, 'xml', 'script', or 'json' *            default value: null * *  semantic: Boolean flag indicating whether data must be submitted in semantic order (slower). *            default value: false * *  resetForm: Boolean flag indicating whether the form should be reset if the submit is successful * *  clearForm: Boolean flag indicating whether the form should be cleared if the submit is successful * * * The 'beforeSubmit' callback can be provided as a hook for running pre-submit logic or for * validating the form data.  If the 'beforeSubmit' callback returns false then the form will * not be submitted. The 'beforeSubmit' callback is invoked with three arguments: the form data * in array format, the jQuery object, and the options object passed into ajaxSubmit. * The form data array takes the following form: * *     [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] * * If a 'success' callback method is provided it is invoked after the response has been returned * from the server.  It is passed the responseText or responseXML value (depending on dataType). * See jQuery.ajax for further details. * * * The dataType option provides a means for specifying how the server response should be handled. * This maps directly to the jQuery.httpData method.  The following values are supported: * *      'xml':    if dataType == 'xml' the server response is treated as XML and the 'success' *                   callback method, if specified, will be passed the responseXML value *      'json':   if dataType == 'json' the server response will be evaluted and passed to *                   the 'success' callback, if specified *      'script': if dataType == 'script' the server response is evaluated in the global context * * * Note that it does not make sense to use both the 'target' and 'dataType' options.  If both * are provided the target will be ignored. * * The semantic argument can be used to force form serialization in semantic order. * This is normally true anyway, unless the form contains input elements of type='image'. * If your form must be submitted with name/value pairs in semantic order and your form * contains an input of type='image" then pass true for this arg, otherwise pass false * (or nothing) to avoid the overhead for this logic. * * * When used on its own, ajaxSubmit() is typically bound to a form's submit event like this: * * $("#form-id").submit(function() { *     $(this).ajaxSubmit(options); *     return false; // cancel conventional submit * }); * * When using ajaxForm(), however, this is done for you. * * @example * $('#myForm').ajaxSubmit(function(data) { *     alert('Form submit succeeded! Server returned: ' + data); * }); * @desc Submit form and alert server response * * * @example * var options = { *     target: '#myTargetDiv' * }; * $('#myForm').ajaxSubmit(options); * @desc Submit form and update page element with server response * * * @example * var options = { *     success: function(responseText) { *         alert(responseText); *     } * }; * $('#myForm').ajaxSubmit(options); * @desc Submit form and alert the server response * * * @example * var options = { *     beforeSubmit: function(formArray, jqForm) { *         if (formArray.length == 0) { *             alert('Please enter data.'); *             return false; *         } *     } * }; * $('#myForm').ajaxSubmit(options); * @desc Pre-submit validation which aborts the submit operation if form data is empty * * * @example * var options = { *     url: myJsonUrl.php, *     dataType: 'json', *     success: function(data) { *        // 'data' is an object representing the the evaluated json data *     } * }; * $('#myForm').ajaxSubmit(options); * @desc json data returned and evaluated * * * @example * var options = { *     url: myXmlUrl.php, *     dataType: 'xml', *     success: function(responseXML) { *        // responseXML is XML document object *        var data = $('myElement', responseXML).text(); *     } * }; * $('#myForm').ajaxSubmit(options); * @desc XML data returned from server * * * @example * var options = { *     resetForm: true * }; * $('#myForm').ajaxSubmit(options); * @desc submit form and reset it if successful * * @example * $('#myForm).submit(function() { *    $(this).ajaxSubmit(); *    return false; * }); * @desc Bind form's submit event to use ajaxSubmit * * * @name ajaxSubmit * @type jQuery * @param options  object literal containing options which control the form submission process * @cat Plugins/Form * @return jQuery */$.fn.ajaxSubmit = function(options) {    if (typeof options == 'function')        options = { success: options };    options = $.extend({        url:  this.attr('action') || window.location.toString(),        type: this.attr('method') || 'GET'    }, options || {});    // hook for manipulating the form data before it is extracted;    // convenient for use with rich editors like tinyMCE or FCKEditor    var veto = {};    $.event.trigger('form.pre.serialize', [this, options, veto]);    if (veto.veto) return this;    var a = this.formToArray(options.semantic);	if (options.data) {	    for (var n in options.data)	        a.push( { name: n, value: options.data[n] } );	}    // give pre-submit callback an opportunity to abort the submit    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) return this;    // fire vetoable 'validate' event    $.event.trigger('form.submit.validate', [a, this, options, veto]);    if (veto.veto) return this;    var q = $.param(a);//.replace(/%20/g,'+');    if (options.type.toUpperCase() == 'GET') {        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;        options.data = null;  // data is null for 'get'    }    else        options.data = q; // data is the query string for 'post'    var $form = this, callbacks = [];    if (options.resetForm) callbacks.push(function() { $form.resetForm(); });    if (options.clearForm) callbacks.push(function() { $form.clearForm(); });    // perform a load on the target only if dataType is not provided    if (!options.dataType && options.target) {        var oldSuccess = options.success || function(){};        callbacks.push(function(data) {            if (this.evalScripts)                $(options.target).attr("innerHTML", data).evalScripts().each(oldSuccess, arguments);            else // jQuery v1.1.4                $(options.target).html(data).each(oldSuccess, arguments);        });    }    else if (options.success)        callbacks.push(options.success);    options.success = function(data, status) {        for (var i=0, max=callbacks.length; i < max; i++)            callbacks[i](data, status, $form);    };    // are there files to upload?    var files = $('input:file', this).fieldValue();    var found = false;    for (var j=0; j < files.length; j++)        if (files[j])            found = true;    // options.iframe allows user to force iframe mode   if (options.iframe || found) {        // hack to fix Safari hang (thanks to Tim Molendijk for this)       // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d       if ($.browser.safari && options.closeKeepAlive)           $.get(options.closeKeepAlive, fileUpload);       else           fileUpload();       }   else       $.ajax(options);    // fire 'notify' event    $.event.trigger('form.submit.notify', [this, options]);    return this;    // private function for handling file uploads (hat tip to YAHOO!)    function fileUpload() {        var form = $form[0];        var opts = $.extend({}, $.ajaxSettings, options);        var id = 'jqFormIO' + $.fn.ajaxSubmit.counter++;        var $io = $('<iframe id="' + id + '" name="' + id + '" />');        var io = $io[0];        var op8 = $.browser.opera && window.opera.version() < 9;        if ($.browser.msie || op8) io.src = 'javascript:false;document.write("");';        $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });        var xhr = { // mock object            responseText: null,            responseXML: null,            status: 0,            statusText: 'n/a',            getAllResponseHeaders: function() {},            getResponseHeader: function() {},            setRequestHeader: function() {}        };        var g = opts.global;        // trigger ajax global events so that activity/block indicators work like normal        if (g && ! $.active++) $.event.trigger("ajaxStart");        if (g) $.event.trigger("ajaxSend", [xhr, opts]);        var cbInvoked = 0;        var timedOut = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -