Jumping is unresponisve

The gameobject will only jump about 1/3 of the time the T button is pressed and I can’t find a way to fix it.

using UnityEngine;
using System.Collections;

public class PlayerMovement : MonoBehaviour {
    public float curSpeed;
    public float acceleration = 5;
    public float decceleration = .2f;
    public float jump = 20;
    public float gravity = 21;
    public float airAcceleration = 2.5f;
    public float jumpAllowTime = .1f;

    float jumpAllowTrack;
    float moveSmooth;
    CharacterController cont;
    bool run = false;
    Vector3 curMove;
   
    float walkMoveV;
    float runMoveV;
    float stopMoveV;
    float airAccelerationV;
    private Stats Player;
   
    void Awake (){
        Player = GetComponent<Stats>();
    }
    // Use this for initialization
    void Start () {
        cont = GetComponent<CharacterController>();
    }
   
    // Update is called once per frame
    void Update () {
       
        if(Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.D))
            run = true;
         else
            run = false;
       
       
        curMove = new Vector3(curSpeed, curMove.y, 0);
       
        //sprint and movement.   
        if(run == true && Input.GetKey (KeyCode.LeftShift))
            curSpeed = Mathf.SmoothDamp(curSpeed, Input.GetAxisRaw ("Horizontal") * Player.runSpeed, ref walkMoveV, moveSmooth);
       
        else if (run == true)
            curSpeed = Mathf.SmoothDamp (curSpeed, Input.GetAxisRaw ("Horizontal") * Player.speed, ref runMoveV , moveSmooth);
       
        else
            curSpeed = Mathf.SmoothDamp (curSpeed, 0, ref stopMoveV , moveSmooth);
       
       
        if(Input.GetKeyDown (KeyCode.T) && jumpAllowTrack >= 0)
            curMove.y = jump;
       
        if(cont.isGrounded){
                curMove.y=0;
                moveSmooth = acceleration;   
                jumpAllowTrack = jumpAllowTime;   
        }
       
        if(!cont.isGrounded){
            curMove -= new Vector3(0, gravity * Time.deltaTime, 0);
            moveSmooth = airAcceleration;
            jumpAllowTrack -= Time.deltaTime;

            }

        cont.Move(curMove*Time.deltaTime);    
       
    }
}

I’m just guessing here, but I’m betting that jumpAllowTrack is frequently less than 0. You’re setting it to equal to jumpAllowTime, which you’ve set as 0.1f & subtracting Time.deltaTime every frame the object isn’t grounded… Might I suggest that you set it so that “if (jumpAllowTrack < 0)” then “jumpAllowTrack = 0”. Let me know how it goes…