It sounds like you are wanting to dynamically create some number of controls at run time and add them to the page. This is fairly common, but unfortunately is much more complicated. Everything from referencing the controls to adding events becomes just a little bit harder. Additionally, dynamically added controls must be re-added during each postback. The controls themselves do not automatically persist between postbacks.
This article gives a great introduction to the topic: http://www.singingeels.com/Articles/Dynamically_Created_Controls_in_ASPNET.aspx
Ultimately, it depends how easily you would like to be able to access the value of those TextBoxes. In JQuery you can create textboxes on the client side, but it will be even harder to use those values from the ASP.NET code-behind page, because they won't be server-side controls.
If it is just going to be a few controls, I would recommend sticking a few controls on during design time and showing and hiding them, as you are already doing. When you are dealing with more than a few, potentially many, repeated controls (which it sounds like you might be), you may have to go with dynamically added controls. Again, I tend to avoid this route unless I have to, because it adds a great deal of complexity.