The Ball (Player) Can Indefinitely Jump,Need Help Fixing Infinite Jumping

When you spam the space bar, the player (or ball) can indefinitely jump. Could someone please help me fix my script so it stops? (Also, yes, I know this may not be the best way to do things but I want to keep it in a way I can understand best.)

public float speed;
public Text countText;
public Text winText;
public AudioSource CoinPickupSound;
public AudioSource NegcoinPickupSound;

private Rigidbody rb;
private int count;

void Start()
{
    rb = GetComponent<Rigidbody>();

    count = 0;

    winText.text = "";

    selfRigidbody = GetComponent<Rigidbody>();

}

void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

    rb.AddForce(movement * speed);

    if (canJump)
    {
        canJump = false;
        selfRigidbody.AddForce(0, forceConst, 0, ForceMode.Impulse);
    }

    
}

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.CompareTag("Pick Up"))
    {
        other.gameObject.SetActive(false);

        count = count + 1;

        SetCountText();

        CoinPickupSound.Play();

    }
    if (other.gameObject.CompareTag("Pick Up 2"))
    {
        other.gameObject.SetActive(false);

        count = count + 2;

        SetCountText();

        CoinPickupSound.Play();
    }
    if (other.gameObject.CompareTag("Pick Up 3"))
    {
        other.gameObject.SetActive(false);

        count = count + 3;

        SetCountText();

        CoinPickupSound.Play();
    }
    if (other.gameObject.CompareTag("Neg Pick Up"))
    {
        other.gameObject.SetActive(false);

        count = count - 1;

        SetCountText();

        NegcoinPickupSound.Play();
    }

    void SetCountText()
    {
        countText.text = "Count: " + count.ToString();

        if (count == 12)
        {
            winText.text = "You Got All Of The Points Possible!  Awesome!";
        }
        else
        {
            if (count >= 9)
            {
                winText.text = "You Got The Points!";
            }
        }
    }
}

public int forceConst = 50;

private bool canJump;
private Rigidbody selfRigidbody;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        canJump = true;
    }
}

You could remove your if statement in the Update, and change your if statement in your FixedUpdate like this

if (Input.GetKeyDown(KeyCode.Space) && canJump)
            {
                canJump = false;
                selfRigidbody.AddForce(0, forceConst, 0, ForceMode.Impulse);
            }

And you can do a collision check, and if you hit the ground, to set the canJump bool to true

private void OnCollisionStay(Collision collision)
    {
        if (collision.gameObject.CompareTag("GroundTag"))
        {
            canJump = true;
        }
    }