You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cacert-testmgr/external/ZendFramework-1.9.5/externals/dojo/dijit/form/Form.js

168 lines
4.7 KiB
JavaScript

dojo.provide("dijit.form.Form");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.require("dijit.form._FormMixin");
dojo.declare(
"dijit.form.Form",
[dijit._Widget, dijit._Templated, dijit.form._FormMixin],
{
// summary:
// Widget corresponding to HTML form tag, for validation and serialization
//
// example:
// | <form dojoType="dijit.form.Form" id="myForm">
// | Name: <input type="text" name="name" />
// | </form>
// | myObj = {name: "John Doe"};
// | dijit.byId('myForm').attr('value', myObj);
// |
// | myObj=dijit.byId('myForm').attr('value');
// HTML <FORM> attributes
// name: String?
// Name of form for scripting.
name: "",
// action: String?
// Server-side form handler.
action: "",
// method: String?
// HTTP method used to submit the form, either "GET" or "POST".
method: "",
// encType: String?
// Encoding type for the form, ex: application/x-www-form-urlencoded.
encType: "",
// accept-charset: String?
// List of supported charsets.
"accept-charset": "",
// accept: String?
// List of MIME types for file upload.
accept: "",
// target: String?
// Target frame for the document to be opened in.
target: "",
templateString: "<form dojoAttachPoint='containerNode' dojoAttachEvent='onreset:_onReset,onsubmit:_onSubmit' ${nameAttrSetting}></form>",
attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
action: "",
method: "",
encType: "",
"accept-charset": "",
accept: "",
target: ""
}),
postMixInProperties: function(){
// Setup name=foo string to be referenced from the template (but only if a name has been specified)
// Unfortunately we can't use attributeMap to set the name due to IE limitations, see #8660
this.nameAttrSetting = this.name ? ("name='" + this.name + "'") : "";
this.inherited(arguments);
},
execute: function(/*Object*/ formContents){
// summary:
// Deprecated: use submit()
// tags:
// deprecated
},
onExecute: function(){
// summary:
// Deprecated: use onSubmit()
// tags:
// deprecated
},
_setEncTypeAttr: function(/*String*/ value){
this.encType = value;
dojo.attr(this.domNode, "encType", value);
if(dojo.isIE){ this.domNode.encoding = value; }
},
postCreate: function(){
// IE tries to hide encType
// TODO: this code should be in parser, not here.
if(dojo.isIE && this.srcNodeRef && this.srcNodeRef.attributes){
var item = this.srcNodeRef.attributes.getNamedItem('encType');
if(item && !item.specified && (typeof item.value == "string")){
this.attr('encType', item.value);
}
}
this.inherited(arguments);
},
onReset: function(/*Event?*/ e){
// summary:
// Callback when user resets the form. This method is intended
// to be over-ridden. When the `reset` method is called
// programmatically, the return value from `onReset` is used
// to compute whether or not resetting should proceed
// tags:
// callback
return true; // Boolean
},
_onReset: function(e){
// create fake event so we can know if preventDefault() is called
var faux = {
returnValue: true, // the IE way
preventDefault: function(){ // not IE
this.returnValue = false;
},
stopPropagation: function(){}, currentTarget: e.currentTarget, target: e.target
};
// if return value is not exactly false, and haven't called preventDefault(), then reset
if(!(this.onReset(faux) === false) && faux.returnValue){
this.reset();
}
dojo.stopEvent(e);
return false;
},
_onSubmit: function(e){
var fp = dijit.form.Form.prototype;
// TODO: remove this if statement beginning with 2.0
if(this.execute != fp.execute || this.onExecute != fp.onExecute){
dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.", "", "2.0");
this.onExecute();
this.execute(this.getValues());
}
if(this.onSubmit(e) === false){ // only exactly false stops submit
dojo.stopEvent(e);
}
},
onSubmit: function(/*Event?*/e){
// summary:
// Callback when user submits the form.
// description:
// This method is intended to be over-ridden, but by default it checks and
// returns the validity of form elements. When the `submit`
// method is called programmatically, the return value from
// `onSubmit` is used to compute whether or not submission
// should proceed
// tags:
// extension
return this.isValid(); // Boolean
},
submit: function(){
// summary:
// programmatically submit form if and only if the `onSubmit` returns true
if(!(this.onSubmit() === false)){
this.containerNode.submit();
}
}
}
);