Why you don't want to use runat="server"??
anyways here is the solution :-
You can use
var txtvalue = document.getElementById("txt").value;
but still you have to save this value (txtvalue) into any hidden field for further use in code behind.
Like:-
var txtvalue = document.getElementById("txt").value;
document.getElementById("<%=HiddenField1.ClientID %>").value = txtvalue;
Now you can use this hidden field value in code behind.
Like :-
session["user"] = HiddenField1.value;
--------------------------
You can also get value by this also :-
session["user"] = Request.Form["txt"];