2009-03-23 19 views
7

O (. Kod mesajların vb) herkes bunu yapıyor gibi görünüyor ... ama ben javascript kullanarak bir asp elemanını manipüle etmeye ne zaman :(javascript kullanarak runat = "server" ASP öğesine nasıl erişebilirim?

i " 'öğesi null' olsun ya da ne kadar biliyoruz dont' belge tanımsız" vb ince genellikle çalışır javascript hata .....

... ama sadece ben runat = eklediğinizde 'sunucu' özniteliği elemanını yapar benim javascript görünmez görünüyor.

herhangi öneri takdir edilecektir

Teşekkürler, Andrew

cevap

23

senin eleman/kontrol adlandırma kaplarda (Usta sayfasında ITemplate, Wizard, vs) olarak hareket bir veya birden fazla ASP.NET denetimleri içinde olduğunu, ve bu onun kimliği değiştirmeye neden oluyor.

Bunu oluşturulan HTML içinde olup bitenler onaylamak için tarayıcınızda "görünümü kaynak" kullanabilirsiniz.

JavaScript ASPX sayfasında ise o use the element's ClientID property etmektir etrafında en kolay yolu geçici olarak çalışmak. Eğer JS aracılığıyla başvurmak istediği bir kontrol adında Metinkutusu1 olsaydı Örneğin,:

var textbox = document.getElementById('<%= TextBox1.ClientID %>'); 
+1

harika cevap ... ama ilk olsa açıklama için ... teşekkürler cevap kişiye vermek zorunda! – Andrew

+3

@Andrew - bu daha iyi bir cevapsa, bunu kabul etmelisiniz. SO kalitesinde hızdan önce gelir. –

+0

ya da ben de düşündüğüm şey ... yapacak. – Andrew

2

Eğer bir metin kutusu varsa:

<asp:TextBox id="txtText" runat="server" /> 

YOu kullanabilirsiniz:

var textBox=document.getElementById('<%=txtText.ClientID %>'); 

Herhangi WebControl aynı ClientID özellik sunar. Muhtemelen ne oluyor

2

unsurunu runat="server" yapma ASP.NET bunun içeride konteyner adlandırma dayalı bu elemanın istemci tarafı kimliğini değiştirir. Öğeyi değiştirmek için document.getElementById kullanıyorsanız, .NET tarafından oluşturulan yeni kimliği iletmeniz gerekir. Bunu sevdiği JavaScript satır içi kullanabilirsiniz ... oluşturulur kimliğini almak için ClientId mülkiyet içine bak: soru yanıtlandı

var element = document.getElementById('<%=myControl.ClientID%>'); 
1

Tüm olsa, sadece birkaç ayrıntıyı daha sonrası düşündüm ...

Rick Strahl bu soruna geçici bir oldukça enteresan çalışmalarını sağladı. ASP .NET 4.0 geldiğinde

http://www.west-wind.com/WebLog/posts/252178.aspx

Neyse ki, bu exacly istemci kimliği en ne olacağını belirtmek sağlayacak!

http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx

+0

+1: Rick'in güzel çözümü ve .NET 4'ün yeni özelliği. Dış dosyada JS'ye sahip olmanın problemini çözer (burada <% = txtText.ClientID%> 'gibi bir şey kullanılamaz) –

İlgili konular