blob: 71b15543d3b5aaa535d683e3213381ed8e7a30ad [file] [log] [blame]
/*
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.Textbox");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.Manager");
dojo.require("dojo.widget.Parse");
dojo.require("dojo.xml.Parse");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.common");
dojo.require("dojo.i18n.common");
dojo.requireLocalization("dojo.widget", "validate", null, "fr,ja,zh-cn,ROOT");
dojo.widget.defineWidget(
"dojo.widget.Textbox",
dojo.widget.HtmlWidget,
{
// summary:
// A generic textbox field.
// Serves as a base class to derive more specialized functionality in subclasses.
// className: String
// The textbox class attribute.
className: "",
// name: String
// The textbox name attribute.
name: "",
// value: String
// The textbox value attribute.
value: "",
// type: String
// Basic input tag type declaration.
type: "",
// trim: Boolean
// Removes leading and trailing whitespace if true. Default is false.
trim: false,
// uppercase: Boolean
// Converts all characters to uppercase if true. Default is false.
uppercase: false,
// lowercase: Boolean
// Converts all characters to lowercase if true. Default is false.
lowercase: false,
// ucFirst: Boolean
// Converts the first character of each word to uppercase if true.
ucFirst: false,
// digit: Boolean
// Removes all characters that are not digits if true. Default is false.
digit: false,
// htmlfloat: String
// "none", "left", or "right". CSS float attribute applied to generated dom node.
htmlfloat: "none",
templatePath: dojo.uri.dojoUri("src/widget/templates/Textbox.html"),
// textbox DomNode:
// our DOM node
textbox: null,
fillInTemplate: function() {
// assign value programatically in case it has a quote in it
this.textbox.value = this.value;
},
filter: function() {
// summary: Apply various filters to textbox value
if (this.trim) {
this.textbox.value = this.textbox.value.replace(/(^\s*|\s*$)/g, "");
}
if (this.uppercase) {
this.textbox.value = this.textbox.value.toUpperCase();
}
if (this.lowercase) {
this.textbox.value = this.textbox.value.toLowerCase();
}
if (this.ucFirst) {
this.textbox.value = this.textbox.value.replace(/\b\w+\b/g,
function(word) { return word.substring(0,1).toUpperCase() + word.substring(1).toLowerCase(); });
}
if (this.digit) {
this.textbox.value = this.textbox.value.replace(/\D/g, "");
}
},
// event handlers, you can over-ride these in your own subclasses
onfocus: function() {},
onblur: function() { this.filter(); },
// All functions below are called by create from dojo.widget.Widget
mixInProperties: function(localProperties, frag) {
dojo.widget.Textbox.superclass.mixInProperties.apply(this, arguments);
if ( localProperties["class"] ) {
this.className = localProperties["class"];
}
}
}
);