ऑनक्लिक विधि में डिफ़ॉल्ट ईवेंट हैंडलिंग को कैसे रोकें?


88

ऑनक्लिक विधि में डिफ़ॉल्ट को कैसे रोकें? मेरे पास एक विधि है जिसमें मैं एक कस्टम मूल्य भी पास कर रहा हूं

<a href="#" onclick="callmymethod(24)">Call</a>
function callmymethod(myVal){
    //doing custom things with myVal
    //here I want to prevent default
}

जवाबों:


106

अपने कॉलबैक को वापस आने दें falseऔर उस onclickहैंडलर को पास करें:

<a href="#" onclick="return callmymethod(24)">Call</a>

function callmymethod(myVal){
    //doing custom things with myVal
    //here I want to prevent default
    return false;
}

बनाए रखने योग्य कोड बनाने के लिए, हालांकि, आपको "इनलाइन जावास्क्रिप्ट" का उपयोग करने से रोकना चाहिए (यानी: कोड जो सीधे एक तत्व के टैग के भीतर है) और एक शामिल जावास्क्रिप्ट स्रोत फ़ाइल (इसे विनीत जावास्क्रिप्ट कहा जाता है ) के माध्यम से एक तत्व के व्यवहार को संशोधित करता है ।

मार्क-अप:

<a href="#" id="myAnchor">Call</a>

कोड (अलग फ़ाइल):

// Code example using Prototype JS API
$('myAnchor').observe('click', function(event) {
    Event.stop(event); // suppress default click behavior, cancel the event
    /* your onclick code goes here */
});

1
@AamirAfridi हाँ, यह काम कर रहा है। आपको अपनी फ़िडेल को समायोजित करना चाहिए और बदलना onLoadedहोगा no wrap। या इसके बजाय बस अपना स्वयं का .html मार्कअप लिखें।
— लाइनस क्लेन

1
कृपया नीचे उत्तर देखें! "मेरी राय में उत्तर गलत है! उसने event.preventDefault () के लिए कहा, जब आप बस ठीक से लौटते हैं; तो वह event.preventDefault (); और event.stopPropagation (); साथ ही!"
— रविन्द्रनाथ अकिला

1
डरपोक होने के लिए, ओपी के प्रश्न का कभी उल्लेख नहीं किया गया है preventDefault, सवाल यह है कि, "[] डिफ़ॉल्ट क्लिक" को कैसे रोका जाए ।
— लीनस क्लेन

1
@LinusKleen, कृपया यह भी कहें कि इस मामले
— vp_arth

1
@vp_arth इसके लिए "CSS click through" का प्रयोग करें। इस प्रश्न को देखो ।
— लाइनस क्लेन

46

मेरी राय में उत्तर गलत है! उसने पूछा कि event.preventDefault();जब तुम झूठे लौटते हो; यह कहता है event.preventDefault();औरevent.stopPropagation(); साथ ही साथ!

आप इसे इसके द्वारा हल कर सकते हैं:

<a href="#" onclick="callmymethod(event, 24)">Call</a>
function callmymethod(e, myVal){
    //doing custom things with myVal

    //here I want to prevent default
    e = e || window.event;
    e.preventDefault();
}

6
आप window.eventउस पर भरोसा कर रहे हैं, जो हमेशा ब्राउज़रों में उपलब्ध नहीं होता है।
— लीनस क्लेन

जोड़ने के लिए संपादित: घटना = घटना || window.event;
— निगेल Fds

45

इसे आज़माएं (लेकिन कृपया ऐसे मामलों के लिए बटन का उपयोग करें यदि आपके पास सुशोभित गिरावट केhref लिए वैध मूल्य नहीं है )

<a href="#" onclick="callmymethod(24); return false;">Call</a>

1
अच्छा बस सबसे अच्छा। मैं Event.preventDefault () के लिए भी यही चाहता हूं;
— समीर काजी

इसने मेरे लिए काम किया, लेकिन क्या आप बता सकते हैं कि आपको क्यों करना है return false;? क्या हम भी झूठे लौट रहे हैं?
— कोलब कैन्यन

आप केवल झूठे रिटर्न के बजाय वापस लौट सकते हैं, लौटने से लिंक को href करने से बचना होगा। तकनीकी रूप से हमें ऐसे मामलों के लिए बटन का उपयोग करना चाहिए।
— आमिर अफरीदी

12

आप ईवेंट को पकड़ सकते हैं और फिर इसे रोक सकते हैं निवारण () के साथ - शुद्ध जावास्क्रिप्ट के साथ काम करता है

document.getElementById("xyz").addEventListener('click', function(event){
    event.preventDefault();
    console.log(this.getAttribute("href"));
    /* Do some other things*/
});

11

बस "javascript: void (0)" को href टैग में "#" के स्थान पर रखें

<a href="javascript:void(0);" onclick="callmymethod(24)">Call</a>

9

इसने मेरे लिए काम किया

<a href="javascript:;" onclick="callmymethod(24); return false;">Call</a>


0

यह सभी html पृष्ठों में फ़ंक्शन usages को बदलने के लिए बहुत थकाऊ होगा return false ।

तो यहां एक परीक्षण समाधान है जो केवल फ़ंक्शन को ही पैच करता है:

function callmymethod(myVal) {
    // doing custom things with myVal

    // cancel default event action
    var event = window.event || callmymethod.caller.arguments[0];
    event.preventDefault ? event.preventDefault() : (event.returnValue = false);

    return false;
}    

यह सही ढंग से IE6, IE11 और नवीनतम क्रोम को आने से रोकता है href="#" ऑनक्लिक ईवेंट हैंडलर के पूरा होने के बाद जाने ।

क्रेडिट:


0

अगर आपको इसे टैग में लगाना है। सबसे अच्छा समाधान नहीं है, लेकिन यह काम करेगा।

सुनिश्चित करें कि आपने ऑनकिक ईवेंट को href के सामने रखा है। केवल इस तरह से मेरे लिए काम किया।

<a onclick="return false;" href="//www.google.de">Google</a>

0

ऐसा करने का एक और तरीका है कि eventविशेषता के अंदर की वस्तु का उपयोग करना onclick(घटना को पारित करने के लिए फ़ंक्शन में एक अतिरिक्त तर्क जोड़ने की आवश्यकता के बिना)

function callmymethod(myVal){
    console.log(myVal);
}
<a href="#link" onclick="event.preventDefault();callmymethod(24)">Call</a>


-3

तत्व को एक कक्षा या आईडी दें और jquery फ़ंक्शन अनबिंड () का उपयोग करें;

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