2010-03-22 26 views
6

से पहले क्लाइंट पर RequiredFieldValidator को कॉल करने के लिए कैसे मुझे कुछ कोड विरासत में मिला है जो divs का उपयोग करके टैब में पृष्ठ को तोड़ देता है। पहले पृष्ठ पर कई आवश्यक फ़ील्ड और रेगेक्स वैधकर्ता हैं। समस्या यह है कि कोई उपयोगकर्ता किसी अन्य टैब पर स्विच कर सकता है, एक पोस्टबैक ट्रिगर कर सकता है और पहले पेज पर वैधताओं को विफल कर सकता है, जिससे चीजों को गड़बड़ में छोड़ दिया जा सकता है।पोस्टबैक

जो मैं करना चाहता हूं वह पहले पृष्ठ पर सत्यापन करना है क्योंकि उपयोगकर्ता एक और टैब चुनता है, इस प्रकार उन्हें पहले टैब तक वैध होने तक एक नए टैब पर जाने से रोकता है।

<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> 

जहां isValid को वैधकर्ताओं को आग लगाना आवश्यक है।

धन्यवाद!

अद्यतन: क्योंकि मैं (प्रदर्शन खिलवाड़ से बचने के लिए), टैब (लंगर) स्विच अभी भी हो रहा है, भले ही दोनों href और onclick गुण प्रदान करने की आवश्यकता codeka द्वारा प्रदान की जवाब बहुत करीब है, तथापि, मान्यता विफल रहता है। यहां बताया गया है कि मैंने इसे कैसे हल किया। अस्वीकरण: बदसूरत कोड

<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(); 
} 

क्लिक ईवेंट के साथ क्रॉस-ब्राउज़र संगतता के लिए jQuery का उपयोग नोट करें। और यह केवल तभी काम करता है जब थॉमस के उत्तर के अनुसार अन्य टैब पर कोई वैधता नहीं है, तो मुझे isValid में सत्यापन समूह और अतिरिक्त तर्क का उपयोग करने की आवश्यकता होगी यदि कोई जोड़ा जाए।

function isValid() { 
    return Page_ClientValidate(); 
} 

उत्तर

2

ASP.NET एक वैश्विक जावास्क्रिप्ट समारोह Page_ClientValidate कि आप प्रमाणकों आग कॉल कर सकते हैं बनाता है। एक टैब से दूसरे करने के लिए क्लिक करने पर, आप की तरह तो जहां टैब के नाम मान्यता समूहों का प्रतिनिधित्व कुछ कहेंगे:

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

अलावा मैं एक टिप्पणी में यह उल्लेख किया है, लेकिन मुझे लगता है मैं अपनी पोस्ट करने के लिए यह जोड़ना होगा लगा । यदि अन्य टैब पर कोई अन्य वैधता नहीं है, तो दूसरा समाधान अन्य टैब पर अन्य .NET नियंत्रणों को चिह्नित करना होगा जो CausesValidation = "false" के साथ पोस्टबैक ट्रिगर कर सकते हैं (उदाहरण के लिए DropPownLists AutoPostBack = "true")

+0

+1 धन्यवाद, यह तब तक काम करना चाहिए जब अन्य टैब पर कोई अन्य वैधता न हो, मैं अब बेहतर जांच करूँगा :) – si618

+0

आप सत्यापन समूह को भी पास कर सकते हैं जिसे आप मान्य करना चाहते हैं, उदाहरण के लिए: 'पृष्ठ_ClientValidate ("पंजीकरण"); ' –

+0

यह बहुत करीब है, वैधकर्ता ऑनक्लिक पर गोलीबारी कर रहे हैं, लेकिन एंकर अभी भी किसी अन्य टैब पर ले जाया जा रहा है भले ही 'झूठी' वापस आ जाए। – si618

2

आप प्रति टैब एक सत्यापन समूह आज़मा सकते हैं:

+0

+1 धन्यवाद, अन्य टैब पर वैध नहीं हैं, लेकिन अच्छी जानकारी है। – si618

+0

यदि अन्य टैब पर कोई अन्य वैधता नहीं है, तो दूसरा समाधान अन्य टैब पर अन्य .NET नियंत्रणों को चिह्नित करना है जो CausesValidation = "false" के साथ पोस्टबैक ट्रिगर कर सकते हैं (उदाहरण के लिए DropPownLists AutoPostBack = "true") । – Thomas