Character stop after touched ground

Hi,Im using a physic/rigidbody base character controller script called in FixedUpdate():

public void Move (Vector3 moveDirection, bool jump)
			//rigidbody.velocity= new Vector3(moveDirection.x*speed,rigidbody.velocity.y,moveDirection.z*speed);
			Vector3 forCe=new Vector3(moveDirection.x,0,moveDirection.z)*speed;
	        // If on the ground and jump is pressed...
	        if (jump&&grounding)
	            	//rigidbody.AddForce(Vector3.up*jumpPower, ForceMode.Impulse);
			}else forCe.y=0;
			print (forCe);


Its work pretty good but there a bug where the character stop moving after touch the groud if the moveDirection didnt changed while midair,so after landing player have to press the move button angain which is very annoying since speed is the key in my game.

I took a look at Unity’s Sample Asset but their complex character controller have the exactly same bug.

Edit: After a short debug I found that its because the horizontal & vertical axis auto move to 0 after press jump,is it hardware limitation or Unity’s bug or I did something wrong?
This is my userControl sript:

void Update ()
		float h;
		float v;
			jump = Input.GetButtonDown("Jump");
			h = Input.GetAxis("Horizontal");
			v = Input.GetAxis("Vertical");
		if (cam != null)
			camForward = Vector3.Scale (cam.forward, new Vector3(1,0,1)).normalized;
			move = (v * camForward + h * cam.right).normalized;	
		} else {
			move = (v * Vector3.forward + h * Vector3.right).normalized;
		print (h+","+v);

here is described similar situation. i checked controls via gamepad and all is ok.

You could also use a boolean such as “cannotWalk” have it false and only apply movement if it is false.
In the ground check portion of your code you could then start a coroutine that sets the bool to true, waits for some time, then sets the bool to false.