एस्प बटन पर पोस्टबैक को कैसे निष्क्रिय करें


135

मेरे पास एक एस्प बटन है। यह सर्वर-साइड है इसलिए मैं इसे केवल लॉग इन उपयोगकर्ताओं के लिए दिखा सकता हूं, लेकिन मैं चाहता हूं कि यह एक जावास्क्रिप्ट फ़ंक्शन चलाए और ऐसा लगता है कि जब यह रनैट = "सर्वर" है तो यह हमेशा पोस्टबैक ईवेंट कहता है।

मेरे पास एक नियमित बटन भी है ( <input...>) सर्वर पर नहीं चल रहा है और यह ठीक काम करता है ...

मैं इस बटन को केवल जावास्क्रिप्ट कैसे चला सकता हूं और पोस्टबैक नहीं?

जवाबों:


263

जब यह किया जाता है तो आपकी जावास्क्रिप्ट झूठी है।

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />

16
कई मामलों में लोग इस वाक्य रचना के साथ एक onclick या OnClientClick का उपयोग करते हैं <asp: बटन OnClientClick = "myFunction ()" /> जहां myFunction () गलत रिटर्न करता है और यह पर्याप्त नहीं है - आपकोClientClick = "रिटर्न myFunction ()" का उपयोग करना होगा
ब्रॉन डेविस

17
मैं UseSubmitBehavior जोड़ने के लिए किया था = "false" के साथ-साथ, वापसी झूठी
लूटने

9
'CausesValidation = "false" जोड़ना सुनिश्चित करें, अन्यथा यह' WebForm_DoPostBackWithOptions 'और अतिरिक्त मार्कअप का एक गुच्छा जोड़ देगा।
कार्टर मेडलिन

यह ASP.NET 4+ में मेरे लिए काम नहीं आया, हालांकि कोन्सटेंटिन के जवाब ने बस OnClientClick="return false"काम किया।
टाइलर


15

आप jquery क्लिक एक्शन का उपयोग कर सकते हैं और पोस्टबैक से बचने के लिए preventDefault () फ़ंक्शन का उपयोग कर सकते हैं

<asp:button ID="btnMyButton" runat="server" Text="MyButton" />


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}

यह एक सुंदर उत्तर है क्योंकि यह आपको शर्तों को अक्षम करने के लिए परीक्षण करने की अनुमति देता है।
जॉन मॉट

1
कभी भी डेडफॉल्ट का उपयोग न करें क्योंकि यह अन्य घटनाओं को रोक देगा जो इस घटना पर भरोसा करते हैं -1
पिओटर कुल

1
@ppumkin: preventDefault अन्य ईवेंट श्रोताओं को यह बताने का एक शानदार तरीका है कि आपने इस ईवेंट को संभाला है, इसलिए उन्हें ऐसा करने की आवश्यकता नहीं है। मुझे लगता है कि आपका मतलब क्या था स्टॉपप्रोपैजेशन, जो वास्तव में अन्य ईवेंट श्रोताओं द्वारा सुनाई जाने वाली घटना को रोक देता है।
सेबस

Yeaaaaaaaaaa। नहीं। 4 साल बाद और मैं अब और भी पीछे खड़ा हूं। बस उस में से कोई भी मत करो।
पायोत्र कुल

8

इस पर विचार करो।

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
    e.get_postBackElement().disabled = true;

}
     </script>

6

दूसरे सही हैं कि झूठे को वापस करने के लिए आपको अपने कॉलबैक की आवश्यकता है; हालाँकि, मैं यह जोड़ना चाहूँगा कि ऑन्कलिक सेट करके ऐसा करना चीजों को करने का एक पुराना तरीका है। मैं विनीत जावास्क्रिप्ट के बारे में पढ़ने की सलाह दूंगाJQuery जैसी लाइब्रेरी का उपयोग करना आपके जीवन को आसान बना सकता है, और HTML आपके जावास्क्रिप्ट (और jQuery के अब Microsoft द्वारा समर्थित !) के लिए कम युग्मित है !


4

ASP.NET हमेशा asp:Buttonएक के रूप में उत्पन्न होता है input type=submit
आप एक बटन जो एक पोस्ट नहीं करता है चाहते हैं, लेकिन सर्वर साइड पर तत्व के लिए कुछ नियंत्रण की जरूरत है, विशेषताओं के साथ एक सरल HTML इनपुट बनाने type=buttonऔर runat=server

यदि आप क्लिक करने की क्रियाओं को अक्षम करते हैं OnClientClick=return false, तो यह क्लिक पर कुछ भी नहीं करेगा, जब तक कि आप एक फ़ंक्शन नहीं बनाते हैं:

function btnClick() {
    // do stuff
    return false;
}

3

आप यह नहीं कहते कि आप किस .NET फ्रेमवर्क का उपयोग कर रहे हैं।

यदि आप v2.0 या अधिक का उपयोग कर रहे हैं, तो आप बटन के ऑनक्लिक इवेंट को ऊपर उठाने पर जावास्क्रिप्ट फ़ंक्शन को निष्पादित करने के लिए OnClientClick संपत्ति का उपयोग कर सकते हैं।

सर्वर पोस्टबैक पॉजिटिव को रोकने के लिए आपको falseकेवल जावास्क्रिप्ट फ़ंक्शन से लौटना होगा ।


3

इसके अतिरिक्त स्वीकृत उत्तर के लिए आप UseSubmitBehavior = "false" MSDN का उपयोग कर सकते हैं


ASP.NET कहते हैं; __doPostBack(क्लाइंट क्लिक स्क्रिप्ट के अंत में।
इवान एचएच

3

मेरे मामले में, मैंने onClientClick में रिटर्न जोड़ने का हल किया:

कोड के पीछे

function verify(){
  if (document.getElementById("idName").checked == "") {
    alert("Fill the field");
    return false;
  }
}

डिज़ाइन की सतह

<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />

इसके OnClickबाद विधि कैसे चलाएं ।
5377037

2

आप कोड का उपयोग कर सकते हैं:

<asp:Button ID="Button2" runat="server"
     Text="Pulsa"
     OnClientClick="this.disabled=true"
     UseSubmitBehavior="False"/>

अगर नी सबमिट करें

...
<form id="form1" runat="server" onsubmit="deshabilita()">
...
<script type="text/javascript">
    function deshabilita()
    {
        var btn = "<%= Button1.ClientID %>";
        if (confirm("Confirme postback"))
        {
            document.getElementById(btn).disabled = true;
            return true;
        }
        return false;
    }
</script>


2

मान्यता के साथ

इस उदाहरण में मैंने दो नियंत्रणों का उपयोग किया है, ddlऔर txtbox, एक खुश कोडिंग है

 asp:ScriptManager ID="script1" runat="server" /asp:ScriptManager

    asp:UpdatePanel ID="Panel1" runat="server"
       ContentTemplate

// ASP BUTTON
asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="return Valid()" OnClick="btnSave_Click"


   /ContentTemplate    
    /asp:UpdatePanel    

  <script type="text/javascript">
        function Valid() {

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val() == 0) {
                alert("Please select YOUR TEXT");
                $("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val().length == 0) {
                alert("Please Type YOUR TEXT");
                $("ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }
            return true;
        }
</script>

2

इसके लिए आप JQuery का उपयोग कर सकते हैं

<asp:Button runat="server" ID="btnID" />

JQuery की तुलना में

$("#btnID").click(function(e){e.preventDefault();})
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.