title: Marking a text field invalid from another text field's change event is undo'ed
body: <p>Here's a function assigned to the <code>change</code> event of <code>textfield</code> in my controller:</p>
  
  <pre><code>checkFields: function (field, ov, nv, e) {
  
      switch (field.name) {
  
          case 'currentPassword':
          case 'newPassword':
          case 'confirmNewPassword':
              //set button state depending on form's element values...
              var form = Utils.getCmp('form[itemId=changePasswordForm]');
              var values = form.getForm().getValues();
  
              if (values.newPassword != values.confirmNewPassword) {
                  this.changePwdButton().setDisabled(true);
                  this.utils.getCmp('textfield[name=confirmNewPassword]').markInvalid(this.strings.Messages.str_ErrorPwdMatch);
                  return false;
              }
              else {
                  this.utils.getCmp('textfield[name=confirmNewPassword]').markInvalid(false);
              }
  
              if (!form.isValid()) {
                  this.changePwdButton().setDisabled(true);
                  return false;
              }
  
              this.changePwdButton().setDisabled(false);
              return true;
              break;
  
      }
  }
  </code></pre>
  
  <p>When this is triggered by the 'newPassword' textfield, the block that marks the <code>confirmNewPassword</code> as invalid works OK but when it's triggered by the <code>confirmNewPassword</code> itself, it works, but then is undo'ed (mark as valid) when the function returns...</p>
  
  <p>If I follow the call stack when triggered via <code>confirmNewPassword</code> the code eventually reaches this in the framework:</p>
  
  <pre><code>checkChange: function() {
      if (!this.suspendCheckChange) {
          var me = this,
              newVal = me.getValue(),
              oldVal = me.lastValue;
          if (!me.isEqual(newVal, oldVal) &amp;&amp; !me.isDestroyed) {
              me.lastValue = newVal;
              me.fireEvent('change', me, newVal, oldVal);
              me.onChange(newVal, oldVal); //this line undos prevous markInvalid()
          }
      }
  }
  </code></pre>
  
  <p>Any ideas why it does that ? Thanks.</p>