You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.0 KiB
99 lines
3.0 KiB
/* |
|
DynAPI Distribution |
|
HTMLTextArea Class |
|
|
|
The DynAPI Distribution is distributed under the terms of the GNU LGPL license. |
|
|
|
Requires: HTMLComponent |
|
*/ |
|
|
|
function HTMLTextArea(css,text,cols,rows,maxLength,title,elmName){ |
|
this.HTMLComponent = HTMLComponent; |
|
this.HTMLComponent(css); |
|
|
|
this._elmId = elmName||(this.id+'TXTA'); |
|
this._cols = cols||20; |
|
this._rows = rows||5; |
|
this._title = title||''; |
|
this._text = text||''; |
|
this._wrap = true; |
|
this._maxLen = maxLength; |
|
this._defEvtResponse = true; |
|
// set max length |
|
if(maxLength>0 && this._text.length>maxLength) { |
|
this._text = this._text.substr(0,maxLength) |
|
} |
|
}; |
|
var p = dynapi.setPrototype('HTMLTextArea','HTMLComponent'); |
|
p._inlineEvents+=' onkeypress="return htc._e(\'keypress\',this,event);" ' |
|
+' onkeyup="return htc._e(\'keyup\',this,event);" ' |
|
+' onkeydown="return htc._e(\'keydown\',this,event);" ' |
|
+' onchange="return htc._e(\'change\',this,event);" '; |
|
// Methods |
|
p._oldHCTAEvt = HTMLComponent.prototype._e; |
|
p._getDSValue = function(){return this._text}; // DataSource functions |
|
p._setDSValue = function(d){this.setText(d)}; |
|
p._e = function(evt,elm,arg){ |
|
// set max length |
|
if(this._maxLen>0 && elm.value.length>this._maxLen){ |
|
this._text = elm.value.substr(0,this._maxLen); |
|
elm.value = this._text; |
|
} |
|
var rt = this._oldHCTAEvt(evt,elm,arg); |
|
if(dynapi.ua.ns4 && evt=='focus' && this._readonly) this.elm.blur(); |
|
return rt; |
|
}; |
|
p._assignElm = function(elm){ |
|
if(!this.parent) return; |
|
else if(!this.parent._created) return; |
|
var doc=this.parent.doc; |
|
if(!elm) { |
|
if(dynapi.ua.ie) elm=doc.all[this._elmId]; |
|
else if(dynapi.ua.dom) elm=doc.getElementById(this._elmId); |
|
else if(dynapi.ua.ns4){ |
|
for(i=0;i<doc.forms.length;i++){ |
|
elm=doc.forms[i][this._elmId]; |
|
if(elm) break; |
|
} |
|
} |
|
if(!elm) return; |
|
} |
|
this.elm = elm; |
|
this.css = (dynapi.ua.ns4)? elm:elm.style; |
|
this.doc = this.parent.doc; |
|
}; |
|
p.getInnerHTML = function(){ |
|
var ua = dynapi.ua; |
|
var wrap,evt,text=this._text||''; |
|
var readstate = (this._readonly)? ' readonly ':''; |
|
if(ua.ns4) wrap=(!this._wrap)? ' wrap="off" ':' wrap="soft" '; |
|
else if(ua.ie) wrap=(!this._wrap)? ' wrap="off" ':' wrap="virtual" '; |
|
else wrap=(!this._wrap)?' style="white-space:nowrap;" ':''; |
|
evt = this._generateInlineEvents(this); |
|
return '<textarea class="'+this._class+'" id="'+this._elmId+'" name="'+this._elmId+'" cols="'+this._cols+'" rows="'+this._rows+'" ' |
|
+wrap+readstate+evt+' title="'+this._title+'">'+text+'</textarea>'; |
|
}; |
|
p.getText = function() { |
|
return (this.getElm())? this.elm.value:this._text |
|
}; |
|
p.setElementName = function(t){ |
|
if(t) this._elmId = t; |
|
}; |
|
p.setReadOnly = function(b){ |
|
this._readonly = b; |
|
if(this.getElm()) this.elm.readonly=(b)? 'readonly':''; |
|
}; |
|
p.setText = function(t) { |
|
var elm = this.getElm(); |
|
this._text = t||''; |
|
if(elm) elm.value=this._text; |
|
}; |
|
p.setWrap = function(b){ |
|
var ua = dynapi.ua; |
|
this._wrap = b; |
|
if(this.getElm()) { |
|
if(ua.ns4) this.elm.wrap = (!b)? 'off':'soft'; |
|
else if(ua.ie) this.elm.wrap = (!b)? 'off':'virtual'; |
|
else this.css.whiteSpace = (!b)? 'nowrap':'normal'; |
|
} |
|
};
|
|
|