DwtInputField.js
Summary
No overview generated for 'DwtInputField.js'
Class Summary
|
DwtInputField |
This class represents an input field.. |
function DwtInputField(params) {
if (arguments.length == 0) return;
this._origClassName = params.className ? params.className : "DwtInputField";
this._errorClassName = this._origClassName + "-Error";
DwtControl.call(this, params.parent, params.className, params.posStyle);
this._type = params.type ? params.type : DwtInputField.STRING;
this._errorIconStyle = params.errorIconStyle ? params.errorIconStyle :
params.validator ? DwtInputField.ERROR_ICON_RIGHT : DwtInputField.ERROR_ICON_NONE;
this._validationStyle = params.validationStyle ? params.validationStyle : DwtInputField.ONEXIT_VALIDATION;
var inputFieldId = Dwt.getNextId();
var errorIconId = Dwt.getNextId();
var htmlEl = this.getHtmlElement();
if (this._errorIconStyle == DwtInputField.ERROR_ICON_NONE) {
if (params.rows && params.rows > 1) {
htmlEl.innerHTML =["<textarea id='", inputFieldId, "' rows=", params.rows, "></textarea"].join("");
} else {
htmlEl.innerHTML = ["<input autocomplete='off' id='", inputFieldId, "' type='",
(this._type != DwtInputField.PASSWORD) ? "text" : "password", "'/>"].join("");
}
} else {
var htmlArr = ["<table cellspacing='0' cellpadding='0'><tr>"];
var i = 1;
if (this._errorIconStyle == DwtInputField.ERROR_ICON_LEFT)
htmlArr[i++] = ["<td style='padding-right:2px;'id='", errorIconId, "'></td>"].join("");
htmlArr[i++] = ["<td><input autocomplete='off' id='", inputFieldId, "' type='",
(this._type != DwtInputField.PASSWORD) ? "text" : "password",
"'/></td>"].join("");
if (this._errorIconStyle == DwtInputField.ERROR_ICON_RIGHT)
htmlArr[i++] = ["<td style='padding-left:2px;' id='", errorIconId, "'></td>"].join("");
htmlArr[i++] = "</tr></table>";
htmlEl.innerHTML = htmlArr.join("");
if (this._errorIconStyle != DwtInputField.ERROR_ICON_NONE) {
this._errorIconTd = document.getElementById(errorIconId);
this._errorIconTd.vAlign = "middle";
this._errorIconTd.innerHTML = DwtInputField._NOERROR_ICON_HTML;
}
}
this._inputField = document.getElementById(inputFieldId);
Dwt.associateElementWithObject(this._inputField, this);
this._inputField.onkeyup = DwtInputField._keyUpHdlr;
this._inputField.onblur = DwtInputField._blurHdlr;
if (params.size)
this._inputField.size = params.size;
if (params.maxLen)
this._inputField.maxLength = this._maxLen = params.maxLen;
this.setCursor("default");
this._inputField.value = params.initialValue || "";
this.setValidatorFunction(params.validatorCtxtObj, params.validator);
this._setMouseEventHdlrs(false);
this._setKeyPressEventHdlr(false);
};
DwtInputField.prototype = new DwtControl;
DwtInputField.prototype.constructor = DwtInputField;
DwtInputField.ERROR_ICON_LEFT = 1;
DwtInputField.ERROR_ICON_RIGHT = 2;
DwtInputField.ERROR_ICON_NONE = 3;
DwtInputField.CONTINUAL_VALIDATION = 1;
DwtInputField.ONEXIT_VALIDATION = 2;
DwtInputField.MANUAL_VALIDATION = 3;
DwtInputField.NUMBER = 1;
DwtInputField.INTEGER = 2;
DwtInputField.FLOAT = 3;
DwtInputField.STRING = 4;
DwtInputField.PASSWORD = 5;
DwtInputField.DATE = 6;
DwtInputField._ERROR_ICON_HTML = AjxImg.getImageHtml("ClearSearch");
DwtInputField._NOERROR_ICON_HTML = AjxImg.getImageHtml("Blank_9");
DwtInputField.prototype.toString =
function() {
return "DwtInputField";
};
DwtInputField.prototype.setValidatorFunction =
function(obj, validator) {
if (validator) {
this._validator = validator;
this._validatorObj = obj;
} else {
switch (this._type) {
case DwtInputField.NUMBER: this._validator = DwtInputField.validateNumber; break;
case DwtInputField.INTEGER: this._validator = DwtInputField.validateInteger; break;
case DwtInputField.FLOAT: this._validator = DwtInputField.validateFloat; break;
case DwtInputField.STRING:
case DwtInputField.PASSWORD:this._validator = DwtInputField.validateString; break;
case DwtInputField.DATE: this._validator = DwtInputField.validateDate; break;
default: this._validator = DwtInputField.validateAny;
}
}
};
DwtInputField.prototype.setValidatorRegExp =
function(regExp, errorString) {
this._validator = regExp;
this._validatorObj = null;
this._errorString = errorString || "";
};
DwtInputField.prototype.setValidationCallback =
function(callback) {
this._validationCallback = callback;
};
DwtInputField.prototype.getInputElement =
function() {
return this._inputField;
};
DwtInputField.prototype.getValue =
function() {
return this._inputField.value;
};
DwtInputField.prototype.setValue =
function(value, noValidate) {
this._inputField.value = value;
if (!noValidate) {
value = this._validateInput(value);
if (value != null)
this._inputField.value = value;
}
};
DwtInputField.prototype.setValidNumberRange =
function(min, max) {
this._minNumVal = min;
this._maxNumVal = max;
var value = this._validateInput(this._inputField.value);
if (value != null)
this._inputField.value = value;
};
DwtInputField.prototype.setValidStringLengths =
function(minLen, maxLen) {
this._minLen = minLen || 0;
if (maxLen != null) {
this._inputField.maxLength = maxLen;
this._maxLen = maxLen;
}
};
DwtInputField.prototype.setNumberPrecision =
function(decimals) {
this._decimals = decimals;
};
DwtInputField.prototype.setReadOnly =
function(readonly) {
this._inputField.setAttribute("readonly", (readonly == null ? true : readonly));
};
DwtInputField.prototype.setRequired =
function(required) {
this._required = required == null ? true : required;
};
DwtInputField.prototype.disabled =
function(disabled) {
this.getInputElement().disabled = disabled;
};
DwtInputField.prototype.isDisabled =
function() {
return this.getInputElement().disabled;
};
DwtInputField.prototype.focus =
function() {
this.getInputElement().focus();
};
DwtInputField.prototype.blur =
function() {
this.getInputElement().blur();
};
DwtInputField.prototype.setVisible =
function(visible) {
Dwt.setVisible(this.getInputElement(), visible);
};
DwtInputField.prototype.isValid =
function() {
try {
if (typeof this._validator == "function") {
return this._validatorObj
? this._validator.call(this._validatorObj, this._inputField.value)
: this._validator(this._inputField.value);
} else {
return this._validator.test(this._inputField.value);
}
} catch(ex) {
if (typeof ex == "string")
return null;
else
throw ex;
}
};
DwtInputField.prototype.validate =
function() {
var value = this._validateInput(this._inputField.value);
if (value != null) {
this._inputField.value = value;
return true;
} else {
return false;
}
};
DwtInputField.validateNumber =
function(value) {
var n = new Number(value);
if (isNaN(n) || (Math.round(n) != n))
throw AjxMsg.notAnInteger;
return DwtInputField.validateFloat.call(this, value);
};
DwtInputField.validateInteger =
function(value) {
var n = new Number(value);
if (isNaN(n) || (Math.round(n) != n))
throw AjxMsg.notAnInteger;
return value;
};
DwtInputField.validateFloat =
function(value) {
if (this._required && value == "")
throw AjxMsg.valueIsRequired;
var n = new Number(value);
if (isNaN(n))
throw AjxMsg.notANumber;
if (this._minNumVal && value < this._minNumVal)
throw AjxMessageFormat.format(AjxMsg.numberLessThanMin, this._minNumVal);
if (this._maxNumVal && value > this._maxNumVal)
throw AjxMessageFormat.format(AjxMsg.numberMoreThanMax, this._maxNumVal);
if (this._decimals != null) {
var str = n.toString();
var pos = str.indexOf(".");
if (pos == -1)
pos = str.length;
value = n.toPrecision(pos + this._decimals);
} else {
value = n.toString();
}
return value;
};
DwtInputField.validateString =
function(value) {
if (this._required && value == "")
throw AjxMsg.valueIsRequired;
if (this._minLen != null && value.length < this._minLen)
throw AjxMessageFormat.format(AjxMsg.stringTooShort, this._minLen);
if (this._maxLen != null && value.length > this._maxLen)
throw AjxMessageFormat.format(AjxMsg.stringTooLong, this._maxLen);
return value;
};
DwtInputField.validateDate =
function(value) {
if (this._required && value == "")
throw AjxMsg.valueIsRequired;
if (AjxDateUtil.simpleParseDateStr(value) == null) {
throw AjxMsg.invalidDatetimeString;
}
return value;
};
DwtInputField.validateAny =
function(value) {
if (this._required && value == "")
throw AjxMsg.valueIsRequired;
return value;
};
DwtInputField.prototype._validateRegExp =
function(value) {
if (this._required && value == "")
throw AjxMsg.valueIsRequired;
if (this._regExp && !this._regExp.test(value)) {
throw this._errorString;
}
return value;
};
DwtInputField._keyUpHdlr =
function(ev) {
var keyEv = DwtShell.keyEvent;
keyEv.setFromDhtmlEvent(ev);
var obj = keyEv.dwtObj;
var keyCode = keyEv.keyCode;
var val = null;
if ((keyCode == 0x0D || keyCode == 0x09)
&& obj._validationStyle == DwtInputField.ONEXIT_VALIDATION)
val = obj._validateInput(keyEv.target.value);
else if (obj._validationStyle == DwtInputField.CONTINUAL_VALIDATION)
val = obj._validateInput(keyEv.target.value);
if (val != null)
keyEv.target.value = val;
return true;
};
DwtInputField._blurHdlr =
function(ev) {
var obj = DwtUiEvent.getDwtObjFromEvent(ev);
if (obj && obj._validationStyle == DwtInputField.ONEXIT_VALIDATION) {
var val = obj._validateInput(obj._inputField.value);
if (val != null)
obj._inputField.value = val;
}
};
DwtInputField.prototype._validateInput =
function(value) {
var isValid = true;
var retVal;
var errorStr;
try {
if (typeof this._validator == "function") {
retVal = value = this._validatorObj
? this._validator.call(this._validatorObj, value)
: this._validator(value);
} else if (!this._validator.test(value)) {
errorStr = this._errorString;
}
} catch(ex) {
if (typeof ex == "string")
errorStr = ex;
else
throw ex;
}
if (errorStr) {
this.getHtmlElement().className = this._errorClassName;
if (this._errorIconTd)
this._errorIconTd.innerHTML = DwtInputField._ERROR_ICON_HTML;
this.setToolTipContent(errorStr);
isValid = false;
retVal = null;
} else {
this.getHtmlElement().className = this._origClassName;
if (this._errorIconTd)
this._errorIconTd.innerHTML = DwtInputField._NOERROR_ICON_HTML;
this.setToolTipContent(null);
isValid = true;
}
if (this._validationCallback)
this._validationCallback.run(this, isValid, value);
return retVal;
};
Documentation generated by
JSDoc on Thu Apr 27 13:54:36 2006