2010-03-22 16 views
6

Bir sayfayı sayfanızı ayırarak, div'leri kullanarak sekmeler halinde geçirdim. İlk sayfada birçok gerekli alan ve regex validators var. Sorun, bir kullanıcının başka bir sekmeye geçebilmesi, bir geri bildirimi tetiklemesi ve ilk sayfadaki doğrulayıcıları geçememesi ve bir şeyleri dağınık hale getirebilmesidir.Geribesleme öncesi istemcideki RequiredFieldValidator nasıl çağırılır

Yapmak istediğim, bir kullanıcı başka bir sekmeyi seçtikçe ilk sayfada doğrulama gerçekleştirmeli, böylece ilk sayfa geçerli olana kadar yeni bir sekmeye geçmeleri önlenmiş olur. isValid doğrulayıcılarını ateşlemesi gerekiyor

<ul>       
    <li><a href="#tab1">Tab 1</a> </li> 
    <li><a href="#tab2" onclick="return isValid();">Tab 2</a></li> 
    <li><a href="#tab3" onclick="return isValid();">Tab 3</a></li> 
</ul> 

.

Teşekkürler!

GÜNCELLEME: Ben (ekrana çıkmasını önlemek için), sekme (çapa) anahtar hala bile gerçekleşiyor href ve onclick hem özelliklerini sağlamak gerekir çünkü codeka tarafından sağlanan cevap, ancak oldukça yakındır doğrulama başarısız olur. İşte bunu nasıl çözdüm. uyarı: Önümüzdeki çirkin kod click olayı ile çapraz tarayıcı uyumluluğu için jQuery

<ul>       
    <li><a id="tab1Tab" href="#tab1" style="display:none"/><a onclick="isValid('tab1');">Tab 1</a></li> 
    <li><a id="tab2Tab" href="#tab2" style="display:none"/><a onclick="isValid('tab2');">Tab 2</a></li> 
    <li><a id="tab3Tab" href="#tab3" style="display:none"/><a onclick="isValid('tab3');">Tab 3</a></li> 
</ul> 

function isValid(tab) { 
    var valid = Page_ClientValidate(); 
    var tabId = (valid ? tab : "tab1") + "Tab"; 
    $("#" + tabId).click(); 
} 

Not kullanılması. Ve bu sadece diğer sekmelerde onaylayıcı yoksa, Thomas'ın cevabına göre, herhangi bir ek varsa isValid'da doğrulama gruplarını ve ek mantığı kullanmam gerekecek.

function isValid() { 
    return Page_ClientValidate(); 
} 

cevap

2

ASP.NET küresel javascript fonksiyonu size doğrulayıcılarını ateş çağırabilir Page_ClientValidate yaratır. başka bir sekmesinden tıklayarak, sen sekme adları doğrulama gruplarını temsil yani nereye gibi bir şey çağırır: Ben bir yorumda bu sözü

function TabValidate(tabName) { 
    if (Page_ClientValidate(tabName)) { 
     //do stuff 
    } 
} 

DA EK ama Postama eklemek düşündüm . Diğer sekmelerde başka bir doğrulayıcı yoksa, diğer bir çözüm, diğer sekmelerde yalnızca CausesValidation = "false" (örneğin, AutoPostBack = "true" ile DropDownLists) ile bir geri bildirimi tetikleyebilecek diğer sekmeleri işaretlemektir.

+0

+1 Diğer sekmelerde başka bir doğrulayıcı olmadığı sürece bu işe yaramalıyız, şimdi kontrol etmeliyim :) – si618

+0

Doğrulamak istediğiniz doğrulama grubunu da iletebilirsiniz, örneğin: 'Page_ClientValidate ("Kayıt"); ' –

+0

Bu oldukça yakın, validators onclick ateşleniyor, ancak 'false' döndürülse bile ankraj hala başka bir sekmeye taşınıyor. – si618

2

Sekme başına bir doğrulama grubunu kullanarak deneyebilirsiniz:

+0

+1 Teşekkürler, diğer sekmelerde doğrulayıcı değil, iyi bilgi var. – si618

+0

Diğer sekmelerde başka bir doğrulayıcı yoksa, başka bir çözüm, diğer sekmelerdeki diğer .NET denetimlerini yalnızca CausesValidation = "false" ile bir geri bildirimi tetikleyebilecek şekilde işaretlemektir (örn. AutoPostBack = "true" ile DropDownLists) . – Thomas

İlgili konular