The runat tag is processed by .net when the page is generated, it has no meaning client-side and adding an element with a runat tag from javascript doesn't make that a server-side control, it simply creates an element with an attribute that is ignored.
What you have to do is ensure the input you create has a unique name (the id is irrelevant) and in your server code use Request.Form to read the value. So create boxes like
<input type="text" name="text1"/>
<input type="text" name="text2"/>
then in your server-code
Request.Form["text1"];
Request.Form["text2"];