অনক্লিক কার্যকর হলে আমি কীভাবে এইচআরইএফ অক্ষম করব?


98

আমি উভয় HREF এবং ONCLICKবৈশিষ্ট্য সেট সঙ্গে একটি অ্যাঙ্কর আছে । যদি ক্লিক করা হয় এবং জাভাস্ক্রিপ্ট সক্ষম করা থাকে তবে আমি চাই এটি কেবল চালানো হোক ONCLICKএবং উপেক্ষা করুন HREF। তেমনি, জাভাস্ক্রিপ্ট যদি অক্ষম বা অসমর্থিত হয় তবে আমি এটি HREFইউআরএল অনুসরণ এবং উপেক্ষা করতে চাই ONCLICK। নীচে আমি কী করছি তার একটি উদাহরণ দেওয়া হল, যা জেএস কার্যকর করবে এবং লিঙ্কটি একই সাথে অনুসরণ করবে (সাধারণত জেএস কার্যকর করা হয় এবং তারপরে পৃষ্ঠা পরিবর্তন হয়):

<A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A>

এটি করার সর্বোত্তম উপায় কি?

আমি জাভাস্ক্রিপ্ট উত্তরের জন্য আশা করছি, তবে যতক্ষণ না এটি কার্যকর হয় ততক্ষণ আমি যে কোনও পদ্ধতি গ্রহণ করব, বিশেষত যদি পিএইচপি দিয়ে এটি করা যায়। আমি ইতিমধ্যে জাভাস্ক্রিপ্ট অনক্লিক ফাংশনটি শেষ করতে সক্ষম হওয়ার আগে " একটি href লিঙ্ক সম্পাদন করে এবং পুনঃনির্দেশ পৃষ্ঠাটি পড়েছি" তবে এটি কেবল বিলম্বিত হয়েছে HREF, তবে এটি সম্পূর্ণরূপে অক্ষম করে না। আমি আরও সহজ কিছু সন্ধান করছি।


4
আমি একটি হ্রেফ এবং একটি ছাড়া অ্যাঙ্কর ব্যবহার করতাম would পৃষ্ঠা লোডে জাভাস্ক্রিপ্ট সক্ষম আছে কিনা তা পরীক্ষা করে দেখুন, যদি এটি সঠিক অ্যাঙ্কর দেখায় তবে অন্যটি প্রদর্শন করুন।
ইয়েইন

4
@ নিউইন কেন? এটি একটি সাধারণ বৈশিষ্ট্যের জন্য ভয়ঙ্কর মার্কআপের মতো শোনাচ্ছে।
সুপহস্টার

উত্তর:


61

আপনি প্রথমটি অন-সম্পাদিত সমাধানটি ব্যবহার করতে পারেন, যদি আপনি onclickগুণকে প্রথমে রিটার্ন রাখেন :

<a href="https://example.com/no-js-login" onclick="return yes_js_login();">Log in</a>

yes_js_login = function() {
     // Your code here
     return false;
}

উদাহরণ: https://jsfiddle.net/FXkgV/289/


4
আমি এটি কতটা পরিষ্কার পছন্দ! যাইহোক, গৃহীত সমাধানটি
এইচআরইএফ

গত কয়েক বছর ধরে আমি আমার মন পরিবর্তন করেছি; এটি একটি আরও ভাল সমাধান
সুপুস্টার

কত স্বাস্থ্যকর!
মাতালদেবকেক

তবে এটি জেএসএক্স প্রতিক্রিয়া নিয়ে কাজ করছে না। এই কাজ করবে?
কোডার

4
এটি অনেক সময় সাশ্রয় করেছে।
চিহ্নিত করুন লোজনো

61
    yes_js_login = function() {
         // Your code here
         return false;
    }

যদি আপনি মিথ্যা প্রত্যাবর্তন করেন তবে এটি ডিফল্ট ক্রিয়া (href- এ যাওয়া) রোধ করা উচিত।

সম্পাদনা: দুঃখিত যে এটি কাজ করে বলে মনে হচ্ছে না, আপনি পরিবর্তে নিম্নলিখিতটি করতে পারেন:

<a href="http://example.com/no-js-login" onclick="yes_js_login(); return false;">Link</a>

4
সম্পাদিত উত্তর প্রশ্নের উত্তর দেয় না, কারণ এটি আসল লিঙ্কটি সরিয়ে দেয়।
Itai বার-হাইম

12
বিকল্প হিসাবে ফিরে আসার onclick="return yes_js_login();"সাথে ব্যবহার করুনyes_js_loginfalse
উয়ে ক্লিন-কনিগ

4
@ cgogolin আমার উত্তর দেখুন।
গাবে রোগান 16

এখনও যে কেউ আটকে আছে তার জন্য, এই লাইনটি যুক্ত করতে পারেevent.stopImmediatePropagation()
didxga

35

আপনার HTML preventDefaultএর eventমধ্যে ব্যবহার করে কেবল ডিফল্ট ব্রাউজারের আচরণটি অক্ষম করুন ।

<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>

yes_js_login = function(e) {
  e.preventDefault();
}

4
মিথ্যা রিটার্ন
পলিমারে

16
<a href="http://www.google.com" class="ignore-click">Test</a>

jQuery সহ:

<script>
    $(".ignore-click").click(function(){
        return false;
    })
</script>

জাভাস্ক্রিপ্ট সহ

<script>
        for (var i = 0; i < document.getElementsByClassName("ignore-click").length; i++) {
            document.getElementsByClassName("ignore-click")[i].addEventListener('click', function (event) {
                event.preventDefault();
                return false;
            });
        }
</script>

আপনি যতগুলি .ignore-clickউপাদান পছন্দ করেন তার জন্য শ্রেণি নির্ধারণ করুন এবং সেই উপাদানগুলির ক্লিকগুলি উপেক্ষা করা হবে


এটি একটি দুর্দান্ত সমাধান! আমি এটিকে আমার বোতামগুলির জন্য ব্যবহার করেছি যে যখন সিউডো ক্লাস .btn-loadingক্লিক করা হয় ক্লিক করা লিঙ্কটিতে যুক্ত করা হয়, তবে সফল হলে একটি চেকমার্ক (ত্রুটিতে একটি এক্স) লোডিং অ্যানিমেশনটি প্রতিস্থাপন করে। আমি চাই না যে কিছু পরিস্থিতিতে (সাফল্য এবং ত্রুটি উভয়ের জন্য) আবারও বোতামটি ক্লিক করতে পারা যায়, এটি ব্যবহার করে আমি সহজ $(elemnent).addClass('disabled')এবং সহজেই কার্যকারিতা অর্জন করতে পারি যা আমি মার্জিত উপায়ে দেখছিলাম!
ম্যাথু ম্যাথিসন

14

আপনি এই সাধারণ কোডটি ব্যবহার করতে পারেন:

<a href="" onclick="return false;">add new action</a><br>

5

আপনি যদি এর মতো কোনও ইভেন্টের প্যারামিটারটি পাস করেন তবে এটি আরও সহজ:

<a href="#" onclick="yes_js_login(event);">link</a>
function yes_js_login(e) {
    e.stopImmediatePropagation();
}

4
এটি আমার পক্ষে কাজ করে না। আমাকে e.preventDefault ()
মিলান সিমেক

2

এটি সাহায্য করতে পারে। কোন জিকুয়ের দরকার নেই

<a href="../some-relative-link/file" 
onclick="this.href = 'https://docs.google.com/viewer?url='+this.href; this.onclick = '';" 
target="_blank">

এই কোডটি নিম্নলিখিতটি করে: Google ডক্স দর্শকের সাথে সম্পর্কিত লিঙ্কটি পাস করুন Pass

  1. দ্বারা অ্যাঙ্কারের সম্পূর্ণ লিঙ্ক সংস্করণ পান this.href
  2. লিঙ্কটি নতুন উইন্ডোটি খুলুন।

সুতরাং আপনার ক্ষেত্রে এটি কাজ করতে পারে:

<a href="../some-relative-link/file" 
onclick="this.href = 'javascript:'+console.log('something has stopped the link'); " 
target="_blank">

1

আমি এমন একটি পরিস্থিতি সমাধান করেছি যেখানে উপাদানটির জন্য আমার একটি টেম্পলেট দরকার ছিল যা বিকল্পভাবে নিয়মিত URL বা জাভাস্ক্রিপ্ট কল পরিচালনা করতে পারে, যেখানে জেএস ফাংশনটিতে কলিং উপাদানটির একটি রেফারেন্স প্রয়োজন। জাভাস্ক্রিপ্টে, "এটি" কেবলমাত্র একটি ফর্ম উপাদান, যেমন একটি বোতামের প্রসঙ্গে স্ব স্ব রেফারেন্স হিসাবে কাজ করে। আমি একটি বোতাম চাইনি, কেবল একটি নিয়মিত লিঙ্কের উপস্থিতি।

উদাহরণ:

<a onclick="http://blahblah" href="http://blahblah" target="_blank">A regular link</a>
<a onclick="javascript:myFunc($(this));return false" href="javascript:myFunc($(this));"  target="_blank">javascript with self reference</a>

এইচআরএফ এবং অনক্লিক বৈশিষ্ট্যের একই মান রয়েছে, আমি যখন জাভাস্ক্রিপ্ট কল করব তখন অনক্লিকটিতে আমি "প্রত্যাবর্তন মিথ্যা" যুক্ত করব। কথিত ফাংশনটিতে "মিথ্যা প্রত্যাবর্তন" কাজ করে না।


দু'জন কেন? আপনি কেন জেএস লাগাচ্ছেন HREF?
সুপহস্তর

সুপুস্তার, প্রকৃত কোডটি গতিশীল, জাভাস্ক্রিপ্ট, এবং বাহ্যিকভাবে সংজ্ঞায়িত বেশ কয়েকটি শত আইটেমের জন্য <a> উপাদান তৈরি করবে। প্রতিটি আইটেম হয় হয় একটি স্থিতিশীল লিঙ্ক ঠিকানা নির্দিষ্ট করে, এবং সেখানে তৈরি <a> উপাদানটি নিয়মিত "href আচরণ" ব্যবহার করা উচিত ts বা, জাভাস্ক্রিপ্ট ফাংশন কল আইটেমটির জন্য নির্দিষ্ট করা হয়েছে, সেক্ষেত্রে <a> উপাদানটির আচরণ গণনা করা হয়, উপাদানটির প্রসঙ্গে। এবং <a> জেনারেটরের কোডে, আমি কেবল প্রতিটি উপাদানটির জন্য নির্দিষ্ট করে যা কিছু অনুলিপি করতে চেয়েছিলাম, এটি কোনও লিঙ্ক ঠিকানা বা জাভাস্ক্রিপ্ট ফান্টিং কল কিনা তা পরীক্ষা করে নিই।
বো জোহানসন

এটি কীভাবে আমার প্রশ্নের উত্তর দেয় আমি বুঝতে পারি না। কে বলেছে আমি কয়েকশ লিঙ্ক চাই? আমি সত্যিই এই সমস্ত কিছুর অর্থ বুঝতে পারছি না, বা আপনি যা বলেছিলেন তার অর্ধেকও।
সুপহস্তর

1

এটি আমার পক্ষে কাজ করেছে:

<a href="" onclick="return false;">Action</a>

4
আপনার উত্তরের জন্য আপনাকে ধন্যবাদ এবং স্ট্যাক এক্সচেঞ্জে স্বাগতম! দুর্ভাগ্যক্রমে, এটি কোনও নতুন জ্ঞান যুক্ত করবে বলে মনে হচ্ছে না, কারণ পূর্ববর্তী উত্তরগুলি ইতিমধ্যে এটির প্রস্তাব দেয়। আপনি যদি সম্মত হন, তবে সেগুলিকে উজ্জীবিত করা ভাল। যদি আপনি একমত না হন তবে আপনার উত্তরটি সম্পাদনা করুন যাতে আপনার নতুন জ্ঞান প্রকাশ পায়!
সুপহস্তর

0

আমার ক্ষেত্রে, আমার একটি শর্ত ছিল যখন ব্যবহারকারী "একটি" উপাদানটিতে ক্লিক করেন। শর্তটি ছিল:

অন্য বিভাগে যদি দশটির বেশি আইটেম থাকে তবে ব্যবহারকারীর অন্যান্য পৃষ্ঠায় পুনঃনির্দেশ করা উচিত নয়।

যদি অন্য বিভাগে দশটিরও কম আইটেম থাকে তবে ব্যবহারকারীর অন্যান্য পৃষ্ঠায় পুনঃনির্দেশ করা উচিত।

"ক" উপাদানগুলির কার্যকারিতা অন্যান্য উপাদানগুলির উপর নির্ভর করে। ক্লিক ইভেন্টের মধ্যে কোডটি অনুসরণ করা হয়:

var elementsOtherSection = document.querySelectorAll("#vehicle-item").length;
if (elementsOtherSection> 10){
     return true;
}else{
     event.preventDefault();
     return false;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.