Click to See Complete Forum and Search --> : Learning Site Javascript from Macromedia


barlows
September 29th, 2004, 01:14 PM
Hi all,
The following script processes text that is entered into a text entry box. The problem is that it strips out all the spaces between the text responses. I would like to keep the spaces (when someone taps the spacebar) in the exact format as they were entered. Is there anyway to change this script to do that? The only stipulation is that all functions must remain intact. Thanks in advance!!!


//Constructs a text entry element
function MM_text(theParent, theName, theInitialValue) {
// properties
this.initialValue = theInitialValue?theInitialValue:'';
this.value = null;
this.disabled = true;

this._parent = theParent;
this._name = theName;
this._obj = '';

this.c = new Array();

// member functions
this.init = MM_textInit;
this.reset = MM_textReset;
this.enable = MM_textEnable;
this.disable = MM_textDisable;
this.setDisabled = MM_textSetDisabled;
this.update = MM_textUpdate;
this.redraw = MM_textRedraw;
this.setValue = MM_textSetValue;
this.focus = MM_textFocus;
}

//Initializes the element
function MM_textInit() {
with (this) _obj = MM_intFindObject(_parent._self + _name + "Inp");
}

//Resets the element
function MM_textReset() {
with (this) {
_parent.disabled ? disable() : enable();
setValue(initialValue);
}
}

//Enables the element
function MM_textEnable() {
var i;
if (this._obj) with (this) {
disabled = false;
for (i in c) if (i != 'length') c[i].disabled = false;
setValue(_obj.value);
}
}

//Disables the element
function MM_textDisable() {
this.disabled = true;
this.redraw();
}

//Calls the approppriate disable or enable function
function MM_textSetDisabled(theDisabled) {
if (theDisabled) this.disable();
else this.enable();
}

//Called by onClick event to update this elements value
//We also store the object reference of the control, so that
// we can reset it later.
function MM_textUpdate() {
var isChanged = '';
if (!this.disabled) with (this) {
_obj.value = MM_textStripSpaces(_obj.value);
isChanged = (value != _obj.value);
value = _obj.value;
for (var i in c) if (i != 'length') c[i].validValue();
if (isChanged && this.onChange != null) onChange(_parent._self+_name, value);
_parent.update(); // call the parent's update
}
}

// Sets the text value
function MM_textRedraw() {
if (this._obj) with (this) {
if (_obj.disabled != null) _obj.disabled = disabled;
if (_obj.value != null) _obj.value = value;
}
}

function MM_textSetValue(theValue) {
var isChanged = '';
with (this) {
theValue = MM_textStripSpaces(theValue);
isChanged = (value != theValue);
value = theValue;
redraw();
for (var i in c) if (i != 'length') c[i].validValue();
if (isChanged && this.onChange != null) onChange(_parent._self+_name, value);
_parent.update(true); // update int, no judge
}
}

function MM_textFocus() {
if (this.disabled) with (this._parent)
if (browserIsNS && browserVersion >= 4.0 && osIsWindows) this._obj.blur();
}


//////////////////////////////////////////
//Create a string choice object
function MM_textComp(theParent, theElement, theName,
theExpectedValue, theIsCorrect, theScore,
theMatchCase, theMatchAll)
{
// properties
this.expectedValue = theExpectedValue;
this.isCorrect = theIsCorrect;
this.score = theScore;
this.selected = false;
this.disabled = false;

this.matchCase = theMatchCase;
this.matchAll = theMatchAll;

this._elem = eval(theParent._self+".e['"+theElement+"']");
this._isChoice = true;

// methods
this.validValue = MM_textCompValidValue;
this.setSelected = MM_textCompSetSelected;
this.setDisabled = MM_textCompSetDisabled;
this.deencrypt = MM_textDeencrypt;

}

function MM_textCompValidValue() {
var theValue, expValue;
with (this) {
selected = false;
if (!disabled) {
theValue = _elem.value;
expValue = deencrypt(expectedValue);

if (!matchCase) {
theValue = theValue.toUpperCase();
expValue = expValue.toUpperCase();
}

if (theValue != '') {
if (matchAll) selected = (theValue == expValue);
else selected = (theValue.indexOf(expValue) != -1);
} } }
return this.selected;
}

function MM_textCompSetSelected(theSelected) {
with (this) {
if (theSelected) {
_elem.setValue(deencrypt(expectedValue));
} else {
selected = false;
_elem._parent.update(true); // update int, no judge
} }
}

function MM_textCompSetDisabled(theDisabled) {
with (this) {
disabled = theDisabled;
validValue();
_elem._parent.update(true); // update interaction, no judge
}
}

function MM_textDeencrypt(theStr) {
var decipher='',i,key,clength,part='-###-',keyOffsetObscure,keyOffset='',hyphen;

if (theStr.indexOf(part)!=-1) {
strStart = theStr.indexOf(part)+part.length;
hyphen=theStr.indexOf('-');
key = theStr.substring(0,hyphen);
keyOffsetObscure=theStr.substring(hyphen+1, theStr.indexOf('-',hyphen+1));
for (i=keyOffsetObscure.length-1;i>=0;i--)
keyOffset+=keyOffsetObscure.charAt(i);
clength = key-keyOffset;
retVal = theStr.substring(strStart, theStr.length);
for (i=0;i<retVal.length;i+=(clength+1))
decipher=decipher+retVal.charAt(i);

retVal = decipher;
}
else retVal = theStr;

return retVal;
}

function MM_textStripSpaces(theStr) {
var c,b=0,e=theStr.length-1,E=e;
while (b<E&&((c=theStr.charAt(b))==" " || c=="\r" || c=="\n")) b++;
while (e>0&&((c=theStr.charAt(e))==" " || c=="\r" || c=="\n")) e--;
return theStr.substring(b,e+1);
}