 
     private function onFieldChange(event:Event):void
     {
-        beginInternalEdit();
-        
         if (action == INSERT)
         {
             _text = StringUtil.splice(_text, selectionStart, selectionEnd, insertedText);
         }
         else if (textField.length < _text.length)
         {
+            // deletion has happened
             if (selectionStart == selectionEnd)
             {
+                // there was no selection, so we need to look at the value we
+                // stored in response to the keyCode to see what to do
                 if (action == DELETE_AFTER)
                 {
                     _text = StringUtil.splice(_text, selectionStart, selectionStart + 1, "");

    private static const DELETE_BEFORE:uint = 2;
    private static const DELETE_AFTER:uint = 3;

    public function MobilePasswordField(textField:TextField)
    {
        super();
        this.textField = textField;
        endInternalEdit();
        textField.text = _text = ""; 
    }

    private function onFieldKeyUp(event:KeyboardEvent):void

    {
        selectionStart = textField.selectionBeginIndex;
        selectionEnd = textField.selectionEndIndex;
    }

    private function endInternalEdit():void
