📄 checkbox.js
字号:
/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Checkbox");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.event.*");dojo.require("dojo.html.style");dojo.require("dojo.html.selection");// summary// Same as an HTML checkbox, but with fancy stylingdojo.widget.defineWidget( "dojo.widget.Checkbox", dojo.widget.HtmlWidget, { templatePath: dojo.uri.dojoUri('src/widget/templates/Checkbox.html'), templateCssPath: dojo.uri.dojoUri('src/widget/templates/Checkbox.css'), // Boolean // if true, clicking will not change the state of the checkbox. // in markup, this is specified as "disabled='disabled'", or just "disabled", disabled: false, // String // name used when submitting form; same as "name" attribute or plain HTML elements name: "", // String // id attached to the checkbox, used when submitting form id: "", // Boolean // if true, checkbox is initially marked turned on; // in markup, specified as "checked='checked'" or just "checked" checked: false, // Integer // order fields are traversed when user hits the tab key tabIndex: "", // Value // equivalent to value field on normal checkbox (if checked, the value is passed as // the value when form is submitted) value: "on", postMixInProperties: function(){ dojo.widget.Checkbox.superclass.postMixInProperties.apply(this, arguments); // set tabIndex="0" because if tabIndex=="" user won't be able to tab to the field if(!this.disabled && this.tabIndex==""){ this.tabIndex="0"; } }, fillInTemplate: function(){ this._setInfo(); }, postCreate: function(){ // find any associated label and create a labelled-by relationship // assumes <label for="inputId">label text </label> rather than // <label><input type="xyzzy">label text</label> var notcon = true; this.id = this.id !="" ? this.id : this.widgetId; if(this.id != ""){ var labels = document.getElementsByTagName("label"); if (labels != null && labels.length > 0){ for(var i=0; i<labels.length; i++){ if (labels[i].htmlFor == this.id){ labels[i].id = (labels[i].htmlFor + "label"); this._connectEvents(labels[i]); dojo.widget.wai.setAttr(this.domNode, "waiState", "labelledby", labels[i].id); break; } } } } this._connectEvents(this.domNode); // this is needed here for IE this.inputNode.checked=this.checked; }, _connectEvents: function(/*DomNode*/ node){ dojo.event.connect(node, "onmouseover", this, "mouseOver"); dojo.event.connect(node, "onmouseout", this, "mouseOut"); dojo.event.connect(node, "onkey", this, "onKey"); dojo.event.connect(node, "onclick", this, "_onClick"); dojo.html.disableSelection(node); }, _onClick: function(/*Event*/ e){ if(this.disabled == false){ this.checked = !this.checked; this._setInfo(); } e.preventDefault(); e.stopPropagation(); this.onClick(); }, onClick: function(){ // summary: user overridable callback function for checkbox being clicked }, onKey: function(/*Event*/ e){ // summary: callback when user hits a key var k = dojo.event.browser.keys; if(e.key == " "){ this._onClick(e); } }, mouseOver: function(/*Event*/ e){ // summary: callback when user moves mouse over checkbox this._hover(e, true); }, mouseOut: function(/*Event*/ e){ // summary: callback when user moves mouse off of checkbox this._hover(e, false); }, _hover: function(/*Event*/ e, /*Boolean*/ isOver){ if (this.disabled == false){ var state = this.checked ? "On" : "Off"; var style = "dojoHtmlCheckbox" + state + "Hover"; if (isOver){ dojo.html.addClass(this.imageNode, style); }else{ dojo.html.removeClass(this.imageNode,style); } } }, _setInfo: function(){ // summary: // set state of hidden checkbox node to correspond to displayed value. // also set CSS class string according to checked/unchecked and disabled/enabled state var state = "dojoHtmlCheckbox" + (this.disabled ? "Disabled" : "") + (this.checked ? "On" : "Off"); dojo.html.setClass(this.imageNode, "dojoHtmlCheckbox " + state); this.inputNode.checked = this.checked; if(this.disabled){ this.inputNode.setAttribute("disabled",true); }else{ this.inputNode.removeAttribute("disabled"); } dojo.widget.wai.setAttr(this.domNode, "waiState", "checked", this.checked); } });// summary// variation on Checkbox widget to be display on monitors in high-contrast mode (that don't display CSS background images)dojo.widget.defineWidget( "dojo.widget.a11y.Checkbox", dojo.widget.Checkbox, { templatePath: dojo.uri.dojoUri('src/widget/templates/CheckboxA11y.html'), fillInTemplate: function(){ }, postCreate: function(args, frag){ this.inputNode.checked=this.checked; //only set disabled if true since FF interprets any value for disabled as true if (this.disabled){ this.inputNode.setAttribute("disabled",true); } }, _onClick: function(){ this.onClick(); } });
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -