2009-03-02 15 views
0

ASP.NET 1.1 için VB.NET'te yazılmış eski bir web uygulaması üzerinde çalışıyorum. Belirli bir sayfa, bir dizi alana sahip bir form içerir. Bir açılır kutu değiştirme değerine karşılık olarak, bir dizi alanı temizlerim, bir kaç açılır kutuyu ilk seçeneğe sıfırlar ve hepsini UI'de "devre dışı bırakılmış" olarak ayarlar. Bunu yapmak için jQuery kullanıyorum. Tüm bu alanlara bir css sınıfı ekledim ve jQuery seçicim aşağıdaki gibi bir şey: $ ("*. My-css-class"). İşte açıklanacak bazı örnek kodlar.jQuery tümleştirme sorunuyla Eski ASP.NET 1.1

var fields = $("*.fields"); 
if(some_condition) 
{ 
fields.val(""); 
fields.attr("selectedIndex", 0); 
fields.attr("disabled", "disabled"); 
} 

yukarıdaki js kodunda cevaben beklendiği gibi UI güncelleştirmeleri, ancak bir düğme tıklaması yanıt olarak geri sayfasını yüklerken, orijinal değerler hala bu kontroller ilgili sunucu tarafında devam. Örneğin, txtSomething bir css sınıfı "alanları" olan alanlardan biridir (bu nedenle yukarıdaki jQuery seçici tarafından seçilecektir). Kullanıcı bu metin kutusuna "1234" türünü yazar ve formu gönderir. Aynı sayfa kendi değerlerini koruyarak geri yüklenir, ya da bu sayfaya geri dönüp sunucu tarafındaki değerleri önceden doldurur (örneğin, kullanıcı bir özet sayfasındaki bir Düzenle düğmesini tıklatır), böylece kontrol txtSomething başlatılır. müşteri "1234" değeriyle. JQuery kodum, kullanıcı bunu kullanıcı arayüzünde gördüğü kadar temizler ve ardından kullanıcı bir gönder düğmesini tıklatır. Değeri jQuery seçici ile sorguladığımda, bu alanın değeri boş bir dizedir. Sayfa geri gönderildiğinde ve kodun içine adım attığımda (veya bu kontrolün değeri ile bir şey yaparken), hala "1234".

Yapılması gereken çok önemli bir nokta, bu değerlerin bir kez gönderildikten sonra tarayıcıya geri gönderilmesidir. Bu nedenle, gönderilmekte olan bir form veya bu değerlerin sunucu tarafında bağlı veya ayarlanmış olduğu ve önceden tarayıcıya (varsayılan veya boş değerlere sahip tarayıcıya gönderilmesinin aksine) çıktısı alınmış herhangi bir örnek resim. Sayfayı varsayılan olarak yüklüyse (boş metin kutuları), bir miktar metin girin ve ardından bu alanları temizlemek için js işlevini tetikleyin, yazdığım değer onu sunucuya yapmaz.

cevap

1

Bu alanları neden devre dışı bırakmanız gerekiyor? Denetimleri devre dışı bırakmak, sunucuya değerler göndermemelerini sağlayabilir ... en azından bir asp.net denetimi sunucu tarafı devre dışı olduğunda ne olur.

Güncelleme 1:. sadece sunucu tarafında, bu yüzden bu örnekte" ... :) http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1 baktım eğer şüphe sahip dayanamadı, GİRİŞ elemanı devre dışı Dolayısıyla alamaz kullanıcı girdisi ne de değeri onunla birlikte gönderilir. ", bu yüzden ben, istemci tarafında devre dışı bırakılsa bile,

+0

değerini sunucu tarafında devre dışı bırakmam. Onları istemcide devre dışı bırakıyorum, böylece kullanıcı bunlara bir değer seçemez veya giremez. – Rich

+0

Mükemmel ... teşekkürler. "Disabled" yerine "readonly" kullandım ve değerler sunucuya gönderildi. Benim tek sorunum şu ki, "readonly" aşağı açılan listelerde çalışmıyor, bu yüzden ya eşdeğer bir attr bulacağım ya da sadece seçimler için sunucuda bazı çirkin el ile şeyler yapacağım. Tekrar thx – Rich