This should be what you want
Using two behaviors on a single player sprite at the same time is not really advised.
That's why the player was like hopping even if no key was touched.
Once you disable the non used behavior, things look better.
Also using groups (enabling/disabling them) helps to define precisely "states". Only the code in the activated group is executed.
Also with common code, you can put it after the groups as to be executed each tick anyway.
Let me know if you need more explanations.