2010-08-06 10 views
7

मुझे लगता है कि मैंने इस परिदृश्य को कई बार किया है, और यह आमतौर पर काम करता है, इसलिए मैं कुछ याद कर रहा हूं।एएसपी.नेट/जावास्क्रिप्ट - पोस्टबैक को रोकना क्यों नहीं "झूठी वापसी" नहीं है?

<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" /> 

हो कौन सा रूप में ग्राहक पर प्रदान की गई है:

<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo"> 

कोई वहाँ आश्चर्य

यहाँ मेरी सर्वर साइड ASP.NET बटन है।

यहाँ आश्चर्य की बात है, मेरी जावास्क्रिप्ट समारोह में:

function foo_Click() { 
    return false; 
} 

ठीक है तो वहाँ है कि तुलना में यह करने के लिए अधिक है, लेकिन मैं एक बात साबित करने के लिए यह कटौती।

जब मैं बटन क्लिक करता हूं, तो यह क्लाइंट-साइड फ़ंक्शन को कॉल करता है, और झूठी रिटर्न देता है।

लेकिन यह अभी भी सर्वर पर वापस पोस्ट करता है, क्यों?

  1. Do क्लाइंट साइड सत्यापन:

    मैं मूल रूप से बटन को क्लिक पर ऐसा करना चाहते हैं।

  2. यदि सत्यापन पास हो जाता है, तो
  3. पोस्ट करें, यदि नहीं, तो फॉर्म पर कुछ त्रुटि संदेश दिखाएं।
बेशक

, मैं एक क्लाइंट साइड बटन (इनपुट प्रकार = "बटन") और पोस्टबैक जब मैं चाहता हूँ बंद मैन्युअल लात को यह बदल सकता है, लेकिन मैं यह है कि क्या करने की जरूरत नहीं होनी चाहिए। या मुझे चाहिए?

उत्तर

17

लिखने return बयान इसलिए जब आप बटन पर क्लिक करें यह return false जो फार्म प्रस्तुत करने की अनुमति नहीं

<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" 
OnClientClick="return foo_Click();" /> 
+0

पता था कि यह स्पष्ट था (थप्पड़ सिर)। धन्यवाद। – RPM1984

+0

मैंने अभी देखा है कि अगर मैं "var passValidation = नया बूलियन (झूठा) करता हूं; वापसी पास वैधता" यह अभी भी पोस्ट करता है। लेकिन अगर मैं सिर्फ झूठी वापसी करता हूं, तो यह नहीं करता है। WTF? कोई विचार? – RPM1984

+0

@ RPM1984: 'नया' कीवर्ड के साथ 'बूलियन' कन्स्ट्रक्टर का उपयोग करके, 'बूलियन' * ऑब्जेक्ट रैपर * बनाता है, और जावास्क्रिप्ट में किसी ऑब्जेक्ट को * सच्चाई * माना जाता है जब बूलियन संदर्भ में उपयोग किया जाता है, उदाहरण के लिए: ' !! नया बूलियन (झूठा) '==> 'सत्य', मैं आपको बस बुलियन 'सत्य' या 'झूठी' अक्षर का उपयोग करने की सलाह दूंगा, जो सीधे आदिम मूल्यों का प्रतिनिधित्व करता है ... – CMS

संबंधित मुद्दे