Soldato
Float the two and then use negative margin to position the button over the text input. Then apply right padding to the text input equal to the width of your button so that any text entered in won't disappear under the button.
I still see the same behaviour between your code and mine, the text does not go under the button in either case.
How's this?
http://jsfiddle.net/PeR6B/5/
Elements floated next to eachother don't need to have padding/margins set on them, they will sit next to eachother anyways.
Edit - read the above from Tripnologist, who is a much better web coder than I am, but I still see the same behaviour between your code and mine, the text does not go under the button in either case.
Well I don't see any image at all for the button, so you should really style it with a background color in case the image can't be loaded like I did.Worry about replacing with an image later.
In fact if you just want a button like your picture why even bother with an image at all? I styled one that looks just the same without any image at all. You can style a basic button with just CSS using background color and text color properties.
If you have two elements that are floated next to eachother and you've said they are both 20px high, if one has border-none; and the other has border:1 px solid <color here>; then they are going to be different heights, because one has a border making it taller than the other by 2px (1px for top border, 1px for bottom).
In which case you would need to say one element is 2px shorter than the other for them to remain aligned. Just like I did on my example.