Input Issue-- Won't stay in proper setting (Javascript)

Well once again I am having issues as a beginner developer. This time the code works up until the point when the vehicle is mounted. It will mount for a split second then send out the debug "off" again. Help?

function OnTriggerStay(other : Collider) {
    if (other.tag == "Player1") {
        if(Input.GetButtonDown("Mount1")) {
            if(mounted) {
                player1.GetComponent("Player1Move").enabled = true;
                target.GetComponent("P1MountMove").enabled = false;
                player1.parent = null;
                Debug.Log("off");
                if(mount == player1) {
                    mounted = false;
                    mount = null;
                }
            } else {
                mounted = true;
                player1.position = seat.position;
                player1.LookAt(faceObject);
                player1.GetComponent("Player1Move").enabled = false;
                target.GetComponent("P1MountMove").enabled = true;
                player1.parent = target;
                mount = player1;
                Debug.Log("on");
            }
        }
    }

Well I can't see anything wrong with your code as long as Input.GetButtonDown is only called once per frame. However maybe OnTriggerStay is being called multiple times per a single frame, in which case Input.GetButtonDown would still be true (the help says its true for the duration of the frame when the button is pressed), and so would exhibit the behaviour you are seeing.

Looking at the help it says that OnTriggerStay is linked to physics updates, in which case it could be called several times a frame. I guess you'll have to add a timer check to the code, that prevents Input.GetButtonDown being checked if the time passed is < some value. This could be quite large since I doubt you want a character to mount/unmount in less than say 1 second.