2011-11-17 17 views
5

को रोकता नहीं है मैंने पहले से ही इसके बारे में बहुत सारे प्रश्न देखे हैं, लेकिन मैं स्टंप हो गया हूं! कृपया सहायता कीजिए!कस्टम सत्यापनकर्ता आग लगता है लेकिन पोस्टबैक

मेरे पास एक कस्टम वैधता है। यह फायरिंग है लेकिन यह पोस्टबैक को रोक नहीं रहा है। कृपया ऐसा करने में मेरी मदद करें! मैं देख सकता हूं कि पोस्ट से पहले console.log पंजीकृत है। लेकिन, यह वैसे भी वापस पोस्ट करता है। मैं पोस्टबैक को कैसे रोकूं?

मैंने मान्य करने के लिए नियंत्रण जोड़ने का प्रयास किया है, और सत्य के बराबर खाली पाठ को मान्य किया है। मैं भी e.preventdefault, जो काम नहीं किया :(

जोड़ने मैं पोस्टबैक कैसे रोका जा सकता है की कोशिश की?

<script type="text/javascript"> 
//<![CDATA[ 
function validateWhyUnlikely(source, args) { 
    console.log(1); 
    args.isValid = false; 
} 
//]]> 

<asp:TextBox ID="txtWhyUnlikely" runat="server" Rows="4" cols="20" 
      CssClass="surveyTextArea" /> 
<asp:CustomValidator runat="server" ID="cfvWhyUnlikley" ErrorMessage="Please provide a reason since you rated an item as unlikely to provide." 
     CssClass="surveyError surveySmallIndent" Display="Dynamic" 
     ClientValidationFunction="validateWhyUnlikely" /> 
<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="smallSpecial" OnClick="btnSubmit_Click" /> 


jQuery(document).ready(function() { 
    jQuery('#<%= btnSubmit.ClientID %>').click(function (e) { 
     if (Page.IsValid == false) { 
      console.log(false); 
      e.preventDefault(); 
      return false; 
     } 
    }); 
}); 

उत्तर

4

सब कुछ ठीक हालांकि मुझे यकीन है कि तुम क्यों कर रहे हैं नहीं कर रहा हूँ लगता है अपने सबमिट बटन पर Click फ़ंक्शन को जोड़ना। मैं इसे हटा दूंगा और इसका परीक्षण कर सकता हूं क्योंकि यह डिफ़ॉल्ट व्यवहार को ओवरराइड कर रहा है।

मुझे लगता है कि आपको इसकी आवश्यकता है भुनाने IsValid संपत्ति:

args.IsValid = false; 
+0

धन्यवाद ... मैं जावास्क्रिप्ट संकलित करना चाहता हूं! कोई त्रुटि नहीं, इस आवरण त्रुटि को नहीं देखा @ केल्सी – Hoppe

3

मैं भी इस मुद्दे का सामना करना पड़ा, मैं एक dropdownlist जो एक selectedIndexChange घटना इसे से जुड़े था करने के लिए एक कस्टम सत्यापनकर्ता जोड़ने की कोशिश कर रहा था। ड्रॉपडाउन के लिए गलत मूल्य देने के बाद, मैं कस्टम वैलिडेटर में दिए गए त्रुटि संदेश को सक्षम करने में सक्षम था लेकिन पोस्टबैक होने के तुरंत बाद।

हालांकि इस संपत्ति को जोड़ने पर CausesValidation="true" ड्रॉपडाउनलिस्ट नियंत्रण में मेरी समस्या का समाधान हुआ।

इस संपत्ति को मेरे ड्रॉपडाउन में जोड़ने के बाद गलत मूल्य पर पोस्टबैक नहीं हो रहा था।

+1

अगर यह आपकी मदद करता है तो कृपया इसे उत्तर के रूप में चिह्नित करें। – Shalini

1

मुझे इस समस्या का भी अनुभव हुआ।

मैं क्या सी # प्रक्रिया है कि बटन द्वारा बुलाया गया था में था,, शीर्ष पर मैं

if (IsValid == false) 
     return; 

जोड़ा मैं इसे पोस्टबैक प्रदर्शन तो यह एकमात्र समाधान की तरह मुझे लग रहा था नहीं रोक सकता है।

0

इसे पोस्ट करना क्योंकि यह वही अजीब व्यवहार प्राप्त करने वाले व्यक्ति की मदद कर सकता है।

प्रारंभ में मुझे इस पोस्ट शीर्षक के समान ही समस्या थी। मैंने यहां सभी सुझावों की जांच की लेकिन मेरा कोड ठीक लग रहा था।

इसे ठीक करने के लिए मैंने के साथ अपने कारण सत्यापन नियंत्रण <asp:Button.. को प्रतिस्थापित किया। यकीन नहीं है कि यह क्यों हो रहा है लेकिन खुश है कि यह अब काम कर रहा है।

hth

0

< बटन टैग कर रहे हैं सही जावास्क्रिप्ट मान्य करने के लिए कोड लापता misssing कर रहे हैं। < एएसपी: बटन में सही जावास्क्रिप्ट प्रस्तुत किया गया है।

मैं किसी भी बटन टैग को यह जोड़ दिया है:

btn.Attributes("onclick") = StringFmt("if(!Page_ClientValidate(''))return false;") 

और उस के बाद वापस समस्या हल हो जाती। कोई पोस्ट-बैक तब नहीं होता है जब क्लाइंट-साइड किसी समस्या का पता लगाता है।

1

यदि यह अन्य लोगों की सहायता करता है, तो मेरे पास एक सत्यापन समूह था जिसे मैं बटन जोड़ना भूल गया था।

रोकथाम के लिए पोस्टबैक के लिए समान सत्यापन समूह में बटन, टेक्स्टबॉक्स और सत्यापनकर्ता को जोड़ना सुनिश्चित करें।

0

मैं एक चर बनाने के द्वारा इस समस्या का समाधान:

if(args.IsValid == false) 
      { 
       fieldIsValid = false; 
      } 
      else 
      { 
       fieldIsValid = true; 
      } 

फिर, मैं भी डाल:

Boolean fieldIsValid = true; 

और कस्टम मान्य अभिव्यक्ति पर मैं मान परिवर्तित होता अगर तर्क सही नहीं थे सबमिट सबमिट विधि में:

protected void submit_Click(object sender, EventArgs e) 
     { 
      if (fieldIsValid) 
      { 
       //submit my things 
      } 
     } 
संबंधित मुद्दे