অনক্লিক পদ্ধতিতে ডিফল্ট ইভেন্ট হ্যান্ডলিং কীভাবে প্রতিরোধ করবেন?


90

অনক্লিক পদ্ধতিতে কীভাবে ডিফল্ট প্রতিরোধ করা যায়? আমার একটি পদ্ধতি রয়েছে যাতে আমি কাস্টম মানও পাস করছি

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

উত্তর:


107

আপনার কলব্যাকটি ফিরে আসুক 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 */
});

4
@ আমিরআফ্রিদি হ্যাঁ, এটি কাজ করছে। আপনার ফিডল সামঞ্জস্য করা উচিত এবং এতে পরিবর্তন onLoadedকরা উচিত no wrap। অথবা পরিবর্তে আপনার নিজের .html মার্কআপ লিখুন।
লিনাস ক্লিন

4
দয়া করে নীচে উত্তর দেখুন! "আমার মতে উত্তরটি ভুল! তিনি ইভেন্ট.প্রিভেন্টডাফল্ট () জিজ্ঞাসা করলেন; যখন আপনি কেবল মিথ্যা প্রত্যাবর্তন করেন; এটিকে ইভেন্ট.প্রিভেন্টডাফল্ট (); এবং ইভেন্ট.স্টপ প্রপাগেশন () বলে;" পাশাপাশি! "
রবীন্দ্রনাথ আকিলা

4
কঠোর হতে, ওপির প্রশ্নটি কখনই উল্লেখ করে না preventDefault, প্রশ্নটি হল " কীভাবে " [ডিফল্ট ক্লিক "প্রতিরোধ করা যায়"
লিনাস ক্লিন

4
@ লিনুসক্লিন, দয়া করে এও বলুন, কীভাবে এই ক্ষেত্রে
ক্লিকগুলি

4
@vp_arth এর জন্য "সিএসএস ক্লিক মাধ্যমে" ব্যবহার করুন। তাকান এই প্রশ্নের
লিনাস ক্লিন

48

আমার মতে উত্তরটি ভুল! তিনি 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;
নাইজেল এফডিএস

45

এটি চেষ্টা করে দেখুন (তবে দয়া করে আপনার যদি কৃপণয় অবক্ষয়েরhref জন্য বৈধ মান না থাকে তবে এই ধরনের ক্ষেত্রে বোতামগুলি ব্যবহার করুন )

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

4
দুর্দান্ত সহজ। আমি ইভেন্ট.প্রিভেন্টডিফল্ট () এর জন্যও এটি চাই;
সমীর কাজী

এটি আমার পক্ষে কাজ করেছিল, তবে আপনি কেন ব্যাখ্যা করতে পারবেন return false;? আমরা কী মিথ্যা ফিরিয়ে দিচ্ছি?
কলব ক্যানিয়ন

আপনি মিথ্যা প্রত্যাবর্তনের পরিবর্তে ফিরে আসতে পারেন, ফিরলে লিঙ্ক নেভিগেট করা এড়ানো যাবে will প্রযুক্তিগতভাবে আমাদের এই ধরনের ক্ষেত্রে বোতাম ব্যবহার করা উচিত।
আমির আফ্রিদি

12

আপনি ইভেন্টটি ধরতে পারেন এবং তারপরে এটিকে ব্লক করতে পারেন ডিফল্ট () - খাঁটি জাভাস্ক্রিপ্টের সাথে কাজ করে

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

11

Href ট্যাগে "#" এর জায়গায় কেবল "জাভাস্ক্রিপ্ট: অকার্যকর (0)" রাখুন

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



1

এটি করার আরেকটি উপায় হ'ল eventবৈশিষ্ট্যের ভিতরে থাকা অবজেক্টটি ব্যবহার করা onclick(ইভেন্টটি পাস করার জন্য ফাংশনে অতিরিক্ত যুক্তি যুক্ত করার প্রয়োজন ছাড়াই)

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


0

সমস্ত এইচটিএমএল পৃষ্ঠাগুলিতে ফাংশন ব্যবহারের পরিবর্তন করা খুব ক্লান্তিকর হবে 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;
}    

এটি সঠিকভাবে আই 6, আই 1111 এবং সর্বশেষ href="#"ক্রোমটি অনক্লিক ইভেন্ট হ্যান্ডলার সম্পূর্ণ হওয়ার পরে পরিদর্শন করা থেকে বাধা দেয় ।

ক্রেডিট:


0

আপনার দরকার হলে তা ট্যাগ এ দিন। সেরা সমাধান নয়, তবে এটি কার্যকর হবে।

নিশ্চিত হয়ে নিন যে আপনি অন্লিক ইভেন্টটি href এর সামনে রেখেছেন। আমার পক্ষে কেবল এইভাবেই কাজ করেছে।

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

-3

উপাদানটিকে একটি শ্রেণি বা আইডি দিন এবং jquery ফাংশন আনবাইন্ড () ব্যবহার করুন;

$(".slide_prevent").click(function(){
                $(".slide_prevent").unbind();
              });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.