Мне не нравится видеть встроенный код, поэтому я никогда не буду использовать $ ("# <% = txt1.ClientID%>");
Я бы, вероятно, использовал $ ("input [id $ = 'txt1']"); поскольку в моем коде не было бы дублированных имен, и сопоставление со стороны, не являющейся добавлением .NET, будет достаточно надежным.