Problem with jumping of the object

Hello.
I am doing a game in style “Roll a ball”. In this script I want to make one jump of my ball when it is on ground. But if I press the space quickly, the ball jumps two or three times, bouncing not from the ground, but from the air. It’s physically impossible… Please help!

Here code on hastebin.com

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Rigidbody))]

public class SphereController : MonoBehaviour
{
  public Rigidbody rb;
  public bool isGrounded;
  public float jumpForce = 2.0f;
  public Vector3 jump;

  void Start ()
  {
    rb = GetComponent<Rigidbody>();
    jump = new Vector3(0.0f, 2.0f, 0.0f);
  }

  void OnCollisionStay()
  {
    isGrounded = true;
  }

  void Update()
  {
    if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
    {
      rb.AddForce(jump * jumpForce, ForceMode.Impulse);
      isGrounded = false;
    }
  }
}

so, you actually need to do a spherecast downwards from the ball about 0.125 units to get if it is grounded. If you are pressing against a wall, and you jump, you are still “on” the wall.