Learning Site Javascript from Macromedia

  Post new topicReply to topicPrintable Version
<< View previous topic View next topic >>
Share: Del.icio.us  Digg  Google  Spurl  Blink  Furl  Y! MyWeb  
#1   Learning Site Javascript from Macromedia
barlows
CZ Newbie
barlows has been a member for over 19 year's 19 Year Member
Status: Offline
Joined: Sep 29, 2004
0.00 posts per day
Posts: 1
Points: 100
   
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);
}



Back to top Reply with quote
Display posts from previous:      
Add To: Del.icio.us  Digg  Google  Spurl  Blink  Furl  Y! MyWeb  
<< View previous topic View next topic >>
Post new topicReply to topic

Jump to 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum