投放本站广告请联系:
extjscn#126.com
AJAX生成的XML表单(Ajax with XML Forms)
演示(demo)地址在文章最后.
效果图如下:
主要文件xml-form.html,xml-form.js,xml-form.xml。
xml-form.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>XML Form</title> <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /> <!-- GC --> <!-- LIBS --> <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script> <!-- ENDLIBS --> <script type="text/javascript" src="../../ext-all.js"></script> <script type="text/javascript" src="states.js"></script> <script type="text/javascript" src="xml-form.js"></script> <link rel="stylesheet" type="text/css" href="forms.css" /> <!-- Common Styles for the examples --> <link rel="stylesheet" type="text/css" href="../examples.css" /> </head> <body> <script type="text/javascript" src="../examples.js"></script><!-- EXAMPLES --> <h1>Loading/Saving a Dynamic Form using XML</h1> <p> This is a very simple example of using XML for load and submit of data with an Ext dynamic form. </p> <p> Click "Load" to load the <a href="xml-form.xml">dummy XML data</a> from the server using an XmlReader. </p> <p> After loading the form, you will be able to hit submit. The submit action will make a post to the server, and the <a href="xml-errors.xml">dummy XML file</a> on the server with test server-side validation failure messages will be sent back. Those messages will be applied to the appropriate fields in the form. </p> <p> Note: The built-in JSON support does not require any special readers for mapping. However, If you don't like the Form's built-in JSON format, you could also use a JsonReader for reading data into a form. </p> <p>The js is not minified so it is readable. See <a href="xml-form.js">xml-form.js</a>.</p> <div id="form-ct"></div> </body> </html>
xml-form.js
/* * Ext JS Library 2.0.2 * Copyright(c) 2006-2008, Ext JS, LLC. * * * http://extjs.com/license */ Ext.onReady(function(){ Ext.QuickTips.init(); // turn on validation errors beside the field globally Ext.form.Field.prototype.msgTarget = 'side'; var fs = new Ext.FormPanel({ frame: true, title:'XML Form', labelAlign: 'right', labelWidth: 85, width:340, waitMsgTarget: true, // configure how to read the XML Data reader : new Ext.data.XmlReader({ record : 'contact', success: '@success' }, [ {name: 'first', mapping:'name/first'}, // custom mapping {name: 'last', mapping:'name/last'}, 'company', 'email', 'state', {name: 'dob', type:'date', dateFormat:'m/d/Y'} // custom data types ]), // reusable eror reader class defined at the end of this file errorReader: new Ext.form.XmlErrorReader(), items: [ new Ext.form.FieldSet({ title: 'Contact Information', autoHeight: true, defaultType: 'textfield', items: [{ fieldLabel: 'First Name', name: 'first', width:190 }, { fieldLabel: 'Last Name', name: 'last', width:190 }, { fieldLabel: 'Company', name: 'company', width:190 }, { fieldLabel: 'Email', name: 'email', vtype:'email', width:190 }, new Ext.form.ComboBox({ fieldLabel: 'State', hiddenName:'state', store: new Ext.data.SimpleStore({ fields: ['abbr', 'state'], data : Ext.exampledata.states // from states.js }), valueField:'abbr', displayField:'state', typeAhead: true, mode: 'local', triggerAction: 'all', emptyText:'Select a state...', selectOnFocus:true, width:190 }), new Ext.form.DateField({ fieldLabel: 'Date of Birth', name: 'dob', width:190, allowBlank:false }) ] }) ] }); // simple button add fs.addButton('Load', function(){ fs.getForm().load({url:'xml-form.xml', waitMsg:'Loading'}); }); // explicit add var submit = fs.addButton({ text: 'Submit', disabled:true, handler: function(){ fs.getForm().submit({url:'xml-errors.xml', waitMsg:'Saving Data...'}); } }); fs.render('form-ct'); fs.on({ actioncomplete: function(form, action){ if(action.type == 'load'){ submit.enable(); } } }); }); // A reusable error reader class for XML forms Ext.form.XmlErrorReader = function(){ Ext.form.XmlErrorReader.superclass.constructor.call(this, { record : 'field', success: '@success' }, [ 'id', 'msg' ] ); }; Ext.extend(Ext.form.XmlErrorReader, Ext.data.XmlReader);
xml-form.xml
<?xml version="1.0" encoding="UTF-8"?> <response success="true"> <contact> <name> <first>Jack</first> <last>Slocum</last> </name> <company>Ext JS</company> <email>support@extjs.com</email> <state>OH</state> <dob>04/15/2007</dob> </contact> </response>
- 关键字:
- 要发表评论,请先登录