একবার আমি বরখাস্ত হয়ে গেলে, আমি evt.preventDefault()
কীভাবে আবার ডিফল্ট ক্রিয়াকলাপগুলি আবার শুরু করতে পারি?
একবার আমি বরখাস্ত হয়ে গেলে, আমি evt.preventDefault()
কীভাবে আবার ডিফল্ট ক্রিয়াকলাপগুলি আবার শুরু করতে পারি?
উত্তর:
@ প্রেসকোটের মন্তব্য অনুসারে, এর বিপরীত:
evt.preventDefault();
হতে পারে:
মূলত 'ডিফল্ট করুন' তে সমীকরণ করা হয় , যেহেতু আমরা আর এটিকে আটকাচ্ছি না।
অন্যথায় আমি আপনাকে অন্য মন্তব্য এবং জবাব সরবরাহিত উত্তরগুলিতে নির্দেশ করতে আগ্রহী:
ইভেন্ট.প্রিভেন্টডেফল্ট () (jQuery ব্যবহার করে) বলছে এমন শ্রোতাকে কীভাবে আনবাইন্ড করবেন?
কীভাবে পুনর্ব্যবহারযোগ্য ইভেন্ট.প্রিভেন্টডিফল্ট?
মনে রাখবেন যে রেডস্কয়ার দ্বারা প্রদত্ত উদাহরণ সমাধানের সাথে দ্বিতীয়টি গ্রহণ করা হয়েছে (এটি নকল হিসাবে বন্ধ না হলে সরাসরি সমাধানের জন্য এখানে পোস্ট করা হয়েছে):
$('form').submit( function(ev) {
ev.preventDefault();
//later you decide you want to submit
$(this).unbind('submit').submit()
});
function(evt) {evt.preventDefault();}
এবং এর বিপরীত
function(evt) {return true;}
চিয়ার্স!
return true
: কিছুই না।
click
JQuery এ ইভেন্ট থেকে একটি লিঙ্ক চালিয়ে যাওয়ার আগে একটি কমান্ড প্রক্রিয়া করতে :
উদাহরণ: <a href="http://google.com/" class="myevent">Click me</a>
JQuery এর মাধ্যমে প্রতিরোধ এবং অনুসরণ করুন:
$('a.myevent').click(function(event) {
event.preventDefault();
// Do my commands
if( myEventThingFirst() )
{
// then redirect to original location
window.location = this.href;
}
else
{
alert("Couldn't do my thing first");
}
});
অথবা কেবল এর window.location = this.href;
পরে চালানpreventDefault();
অ্যাসিঙ্ক্রোনাস কল কার্যকর করতে আমাকে jQuery এ একটি ফর্ম জমা দিতে বিলম্ব করতে হয়েছিল। সরলীকৃত কোডটি এখানে ...
$("$theform").submit(function(e) {
e.preventDefault();
var $this = $(this);
$.ajax('/path/to/script.php',
{
type: "POST",
data: { value: $("#input_control").val() }
}).done(function(response) {
$this.unbind('submit').submit();
});
});
ঠিক আছে ! এটি ক্লিক ইভেন্টের জন্য কাজ করে:
$("#submit").click(function(e){
e.preventDefault();
-> block the click of the sumbit ... do what you want
$("#submit").unbind('click').click(); // the html click submit work now !
});
event.preventDefault(); //or event.returnValue = false;
এবং এর বিপরীত (মান):
event.returnValue = true;
উত্স: https://developer.mozilla.org/en-US/docs/Web/API/Event/returnValue
আমি নিম্নলিখিত প্যাটার্ন সুপারিশ করব:
document.getElementById("foo").onsubmit = function(e) {
if (document.getElementById("test").value == "test") {
return true;
} else {
e.preventDefault();
}
}
<form id="foo">
<input id="test"/>
<input type="submit"/>
</form>
... যদি না আমি কিছু মিস করছি
আপনি যখন ফোন করবেন তখন event.preventDefault()
প্রথমে আপনাকে কী করতে হবে তা কেন আগে খতিয়ে দেখতে হবে তা বোঝার কোনও বিপরীত পদ্ধতি event.preventDefault()
নেই।
হুডের নীচে, ডিফল্ট প্রতিরোধের কার্যকারিতা মূলত একটি রিটার্নকে মিথ্যা বলে যা আরও কার্যকরভাবে থামায়। আপনি যদি জাভাস্ক্রিপ্টের পুরানো উপায়গুলির সাথে পরিচিত হন তবে ফর্ম সাবমিট এবং বোতাম বোতামের মতো ইভেন্টগুলি বাতিল করার জন্য রিটার্ন মিথ্যা ব্যবহার করা ফ্যাশনে একবার সত্য ব্যবহারের আগে (jQuery এর আশেপাশেও ছিল)।
আপনি সম্ভবত উপরের সাধারণ ব্যাখ্যাটির ভিত্তিতে ইতিমধ্যে কাজ করেছেন: বিপরীত event.preventDefault()
কিছুই নয় nothing আপনি কেবল ইভেন্টটি আটকাবেন না, ডিফল্টরূপে ব্রাউজারটি ইভেন্টটিকে আটকাতে না পারলে মঞ্জুরি দেবে।
ব্যাখ্যার জন্য নীচে দেখুন:
;(function($, window, document, undefined)) {
$(function() {
// By default deny the submit
var allowSubmit = false;
$("#someform").on("submit", function(event) {
if (!allowSubmit) {
event.preventDefault();
// Your code logic in here (maybe form validation or something)
// Then you set allowSubmit to true so this code is bypassed
allowSubmit = true;
}
});
});
})(jQuery, window, document);
উপরের কোডে আপনি লক্ষ্য করবেন যে আমরা অনুমতি দিচ্ছি সাবমিটটি মিথ্যা কিনা তা পরীক্ষা করে দেখছি। এর অর্থ আমরা আমাদের ফর্মটি ব্যবহার করে জমা দেওয়া থেকে বিরত করব event.preventDefault
এবং তারপরে আমরা কিছু বৈধতা যুক্তি করব এবং যদি আমরা খুশি থাকি তবে সাবমিটসমিটকে সত্য হিসাবে সেট করুন।
এর বিপরীতে কাজ করার এটিই একমাত্র কার্যকর পদ্ধতি event.preventDefault()
- আপনি ইভেন্টগুলি অপসারণের চেষ্টাও করতে পারেন যা মূলত একই জিনিসটি অর্জন করবে।
এখানে দরকারী কিছু ...
সবার আগে আমরা লিঙ্কটিতে ক্লিক করব, কিছু কোড চালাব এবং এর চেয়ে আমরা ডিফল্ট ক্রিয়া করব। এটি ইভেন্ট ক্রন্টের টার্গেট ব্যবহার করে সম্ভব হবে একবার দেখুন। এখানে আমরা একটি নতুন ট্যাবে গুগল অ্যাক্সেস করার চেষ্টা করব, তবে এর আগে আমাদের কিছু কোড চালানো দরকার।
<a href="https://www.google.com.br" target="_blank" id="link">Google</a>
<script type="text/javascript">
$(document).ready(function() {
$("#link").click(function(e) {
// Prevent default action
e.preventDefault();
// Here you'll put your code, what you want to execute before default action
alert(123);
// Prevent infinite loop
$(this).unbind('click');
// Execute default action
e.currentTarget.click();
});
});
</script>
এটি আমি এটি সেট করতে ব্যবহৃত:
$("body").on('touchmove', function(e){
e.preventDefault();
});
এবং এটিকে পূর্বাবস্থায় ফেরাতে:
$("body").unbind("touchmove");
কোনও সমাধান এখানে আমাকে সহায়তা করেনি এবং আমি আমার পরিস্থিতি সমাধানের জন্য এটি করেছি did
<a onclick="return clickEvent(event);" href="/contact-us">
এবং ফাংশন clickEvent()
,
function clickEvent(event) {
event.preventDefault();
// do your thing here
// remove the onclick event trigger and continue with the event
event.target.parentElement.onclick = null;
event.target.parentElement.click();
}
আমি মনে করি "বিপরীত" কোনও ইভেন্টের অনুকরণ করা হবে। আপনি ব্যবহার করতে পারেন.createEvent()
মজিলার উদাহরণ অনুসরণ করা:
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("checkbox");
var cancelled = !cb.dispatchEvent(evt);
if(cancelled) {
// A handler called preventDefault
alert("cancelled");
} else {
// None of the handlers called preventDefault
alert("not cancelled");
}
}
রেফ: ডকুমেন্ট.ক্রেটএভেন্ট
jQuery এর রয়েছে .trigger()
যাতে আপনি উপাদানগুলিতে ইভেন্টগুলি ট্রিগার করতে পারেন - কখনও কখনও দরকারী।
$('#foo').bind('click', function() {
alert($(this).text());
});
$('#foo').trigger('click');
jquery অন () এর আর একটি সমাধান হতে পারে। এস্কেপ্যাসিয়ালি যখন এটি নেমস্পেসের ব্যবহারের কথা আসে ।
jquery অন () কেবলমাত্র বাইন্ডিং ইভেন্টগুলির (বাইন্ড () এর পরিবর্তে) বর্তমান পদ্ধতি। অফ () এগুলি বন্ধ করে দেওয়া হয়। এবং যখন আপনি একটি নেমস্পেস ব্যবহার করেন, আপনি একাধিক বিভিন্ন ইভেন্ট যুক্ত করতে এবং মুছে ফেলতে পারেন।
$( selector ).on("submit.my-namespace", function( event ) {
//prevent the event
event.preventDefault();
//cache the selector
var $this = $(this);
if ( my_condition_is_true ) {
//when 'my_condition_is_true' is met, the binding is removed and the event is triggered again.
$this.off("submit.my-namespace").trigger("submit");
}
});
এখন নেমস্পেসের ব্যবহারের সাথে আপনি এই ইভেন্টগুলির একাধিক সংখ্যক যোগ করতে পারেন এবং আপনার প্রয়োজনের উপর নির্ভর করে সেগুলি মুছে ফেলতে সক্ষম হবেন .. যদিও জমা দেওয়ার সর্বোত্তম উদাহরণ নাও হতে পারে, এটি কোনও ক্লিক বা কীপ্রেস বা যা কিছু কাজে আসে ..
এটি প্রশ্নের সরাসরি উত্তর নয় তবে এটি কারও সাহায্য করতে পারে। আমার বক্তব্যটি হ'ল আপনি কেবলমাত্র কিছু অবস্থার উপর ভিত্তি করে প্রিভেনডেফল্ট () কল করুন কারণ আপনি যদি সমস্ত ক্ষেত্রে কেইনডেফাল্ট () কল করেন তবে কোনও ইভেন্ট হওয়ার কোনও মানে নেই। সুতরাং যদি শর্ত থাকে এবং কন্ডিশন ডিফল্ট () কে কল করা হয় তবেই যখন শর্তটি সন্তুষ্ট হয় অন্য ক্ষেত্রেগুলির জন্য স্বাভাবিকভাবে ফাংশনটি কাজ করবে।
$('.btnEdit').click(function(e) {
var status = $(this).closest('tr').find('td').eq(3).html().trim();
var tripId = $(this).attr('tripId');
if (status == 'Completed') {
e.preventDefault();
alert("You can't edit completed reservations");
} else if (tripId != '') {
e.preventDefault();
alert("You can't edit a reservation which is already attached to a trip");
}
//else it will continue as usual
});
আপনি "প্রতিরোধক ডিফল্ট" পদ্ধতির পরে এটি ব্যবহার করতে পারেন
// এখানে evt.target রিটার্ন ডিফল্ট ইভেন্ট (উদা: ডিফল্ট url ইত্যাদি)
var defaultEvent=evt.target;
// এখানে আমরা ডিফল্ট ইভেন্ট সংরক্ষণ করি ..
if("true")
{
//activate default event..
location.href(defaultEvent);
}
এই কোডটি আমার ব্যবহারের পরে ইভেন্টটি পুনরায় ইনস্ট্যান্ট করার জন্য কাজ করেছিল:
event.preventDefault(); to disable the event.
event.preventDefault = false;
আমি নিম্নলিখিত কোড ব্যবহার করেছি। এটা আমার জন্য ভালই কাজ করে।
$('a').bind('click', function(e) {
e.stopPropagation();
});
event.preventDefault()
;