कब और क्यों जावास्क्रिप्ट में 'झूठे वापस' करने के लिए?


जवाबों:


88

अक्सर, घटना संचालकों में, जैसे कि onsubmit, झूठे लौटना घटना को वास्तव में आग न बताने का एक तरीका है। तो, कहते हैं, onsubmitमामले में, इसका मतलब यह होगा कि फॉर्म जमा नहीं किया गया है।


10
यह विशेष रूप से अच्छा है यदि आप एक AJAX फॉर्म चाहते हैं जो पेज को फिर से लोड किए बिना सबमिट करता है - लेकिन जब जावास्क्रिप्ट उपलब्ध नहीं होता है तो पेज सबमिट करके और फिर से लोड करके भी काम करता है।
डीन राथर

10
ईवेंट हैंडलर बनाते समय डिफ़ॉल्ट कार्रवाई को रोकने के लिए गलत रिटर्न वास्तव में ओवरकिल है और नाजुक कोड हो सकता है। डगलस नीनेर की पोस्ट पर स्पष्टीकरण और उदाहरण यहां fuelyourcoding.com/jquery-events-stop-misusing-return-false
Marquis वांग

3
JQuery के साथ, event.preventDefault()इस कार्यक्षमता के लिए उपयोग करना बेहतर है । मेरा मानना ​​है कि असत्य को लौटाना पदावनत है और हमेशा काम नहीं करता है।
onetwopunch

1
कभी-कभी return falseविधि में होता है, क्या यह कुछ भी बदलता है?
फ्रांसिस्को कॉर्लेस मोरेल्स

@onetwopunch वास्तव में जब मैंने इसे e.preventDefault () में बदल दिया तो एक नेमस्पेस टच इवेंट के आधार पर मेरे एक कार्य के साथ एक समस्या हल हो गई। पता नहीं क्यों, लेकिन आपने मुझे यह विचार दिया। धन्यवाद।
गरवानी

69

मैं अनुमान लगा रहा हूं कि आप इस तथ्य का उल्लेख कर रहे हैं कि आपको अक्सर 'वापसी झूठी' डालनी होगी; अपने घटना संचालकों, यानी में बयान

<a href="#" onclick="doSomeFunction(); return false;">...

'झूठे लौटे?' इस स्थिति में ब्राउज़र को वर्तमान स्थान पर जाने से रोकता है, जैसा कि href = "#" द्वारा इंगित किया गया है - इसके बजाय, केवल doSomeFunction () निष्पादित किया जाता है। जब आप एंकर टैग में घटनाओं को जोड़ना चाहते हैं, तो यह उपयोगी है, लेकिन ब्राउज़र को प्रत्येक एंकर पर प्रत्येक क्लिक पर ऊपर और नीचे कूदना नहीं चाहिए


3
बेशक, 'href = "#" बुरी प्रथा है, लेकिन आपका समग्र बिंदु अभी भी खड़ा है :-)
बॉबी जैक

4
@ vol7ron: विकल्प एक वास्तविक URL है जो जावास्क्रिप्ट के बिना उन लोगों के लिए एक विकल्प के रूप में कार्य करता है। अन्यथा, वे सिर्फ एक लिंक पर क्लिक करेंगे जिसमें कुछ भी नहीं हो रहा है।
बॉबी जैक

3
@ vol7ron: बेशक, यह प्रत्येक डेवलपर (या साइट स्वामी) के लिए यह निर्धारित करने के लिए नीचे है कि वे कितने संभावित उपयोगकर्ता आधार को पूरा करना चाहते हैं। इस तरह से एक मामले में, हालांकि, जहां अधिक लोगों को लक्षित करने वाला विकल्प SO सरल है, मैं नहीं देखता कि आप इसके लिए विकल्प क्यों नहीं चुनते। यह भी ध्यान रखें कि यह लोगों के बारे में स्पष्ट रूप से जावास्क्रिप्ट अक्षम करने के बारे में नहीं है; यह हो सकता है: कोई और उस निर्णय को उन पर थोप रहा है, जेएस फाइल को डाउनलोड करने में एक नेटवर्क समस्या, जेएस की एक पंक्ति में एक बग जिसके कारण यह सब विफल हो गया। इसके अलावा, यह बहुत अच्छा है अगर राइट-क्लिक करें- नया टैब में खुला अभी भी काम करता है।
बॉबी जैक

यह उपयोगकर्ताओं के 1% से कम नहीं है। बहुत से लोग किसी कारण से NoScript जैसे एक्सटेंशन का उपयोग करते हैं। उद्देश्यों की तरह जावास्क्रिप्ट को चालू करने के लिए।
सेपरो

@ vol7ron पर विचार करने के लिए अन्य परिदृश्य तब है जब "जावास्क्रिप्ट टूट जाता है" (पृष्ठ में एक सिंटैक्स त्रुटि अधिक होने के कारण)। नॉन-जेएस फॉलबैक होने से आपको इस परिदृश्य के लिए कुछ सुरक्षा जाल मिलते हैं। (Google.com एक js वाक्यविन्यास त्रुटि के कारण लगभग 30 मिनट पहले वापस आ गया था!)
एलेक्स Czarto

28

इसका उपयोग घटना के प्रसार को रोकने के लिए किया जाता है । जब आप एक क्लिक ईवेंट हैंडलर के साथ दोनों तत्व देखते हैं (उदाहरण के लिए)

-----------------------------------
| element1                        |
|   -------------------------     |
|   |element2               |     |
|   -------------------------     |
|                                 |
-----------------------------------

यदि आप आंतरिक तत्व (एलिमेंट 2) पर क्लिक करते हैं तो यह दोनों तत्वों में एक क्लिक ईवेंट को ट्रिगर करेगा: 1 और 2. इसे "ईवेंट बबलिंग" कहा जाता है। यदि आप ईवेंट 2 में केवल ईवेंट को हैंडल करना चाहते हैं, तो ईवेंट हैंडलर को इवेंट के प्रचार को रोकने के लिए गलत वापस लौटना होगा।

एक और उदाहरण लिंक ऑनक्लिक हैंडलर होगा। यदि आप एक लिंक फॉर्म को काम करना बंद करना चाहते हैं। आप एक ऑनक्लिक हैंडलर जोड़ सकते हैं और गलत वापस कर सकते हैं। डिफ़ॉल्ट हैंडलर के प्रचार से घटना को रोकने के लिए।


9
इस उत्तर का पहला भाग गलत है: falseकिसी ईवेंट हैंडलर से लौटने पर किसी ईवेंट से जुड़ी डिफ़ॉल्ट कार्रवाई को रोका जा सकेगा; आप इसे कॉल event.preventDefault()या सेटिंग event.returnValue = false(IE) के माध्यम से भी कर सकते हैं ; घटना को बुदबुदाहट से रोकने के लिए, आपको कॉल करना होगा event.stopPropagation()या सेटिंग event.cancelBubble = true(IE)
क्रिस्टोफ़

18

एर ... 'सच नहीं' का संकेत देने के लिए बूलियन फ़ंक्शन में कैसे?


4
FileNotFound के बारे में क्या?
निकफ

यहां तक ​​कि FileNotFound में भी यह सच नहीं है?
ग्लीब

2
Gleb: "FileNotFound" में कोई भी नहीं है, यह TDWTF इन-जोक है: thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
क्रिस

12

मैं "js, जब 'गलत का उपयोग करता हूं;' की खोज के बाद भी इस पृष्ठ पर आया था; अन्य खोज परिणामों में एक ऐसा पृष्ठ था जो मुझे क्रिस कॉयर की सीएसएस-ट्रिक्स साइट पर कहीं अधिक उपयोगी और सीधा मिला,: 'झूठे झूठ;' के बीच का अंतर और 'e.preventDefault ();'

उनके लेख का सार है:

समारोह () {झूठी वापसी; }

// के बराबर है

function (e) {e.preventDefault (); e.stopPropagation (); }

हालाँकि मैं अभी भी पूरे लेख को पढ़ने की सलाह दूंगा।

अद्यतन: झूठे का उपयोग करने के गुण के तर्क के बाद; e.preventDefault () के प्रतिस्थापन के रूप में; & e.stopPropagation (); मेरे सहकर्मियों में से एक ने बताया कि झूठी वापसी भी कॉलबैक निष्पादन को रोकती है, जैसा कि इस लेख में उल्लिखित है: jQuery इवेंट्स: स्टॉप (मिस) रिटर्न फॉल्स का उपयोग करना


मुझे कुछ कोड टेस्ट के बाद यहाँ नोटिस करना है कि: jquery में , function() { return false; }IS EQUAL TO function(e) { e.preventDefault(); e.stopPropagation(); }, लेकिन शुद्ध js में, यह समान नहीं है, function() { return false; }IS EQUAL TO function(e) { e.preventDefault(); }वास्तव में। यह प्रचार बंद नहीं करता है।
SkuraZZ


3

मुझे लगता है कि एक बेहतर सवाल यह है कि ऐसे मामले में क्यों आप रिटर्न वैल्यू के बूलियन सेट का मूल्यांकन कर रहे हैं, क्या आप सही / गलत का उपयोग नहीं करेंगे ? मेरा मतलब है, आप शायद सच्चे / अशक्त, सच्चे / -1, अन्य मिसकैरेज कर सकते हैं। जावास्क्रिप्ट "मिथ्या" मूल्यों को स्थानापन्न करने के लिए, लेकिन आप ऐसा क्यों करेंगे?


1

जब आप एक एंकर टैग से जावास्क्रिप्ट कोड को ट्रिगर करना चाहते हैं, तो ऑन्कलिक हैंडलर का उपयोग जावास्क्रिप्ट के बजाय किया जाना चाहिए: छद्म प्रोटोकॉल। जावास्क्रिप्ट हैंडलर के भीतर चलने वाले जावास्क्रिप्ट कोड को सही या गलत (या सही या गलत के लिए evalues ​​की तुलना में एक अभिव्यक्ति) वापस टैग पर वापस लौटना होगा - यदि यह सच है, तो लंगर की HREF को एक सामान्य लिंक की तरह पालन किया जाएगा। यदि यह गलत है, तो HREF को नजरअंदाज कर दिया जाएगा। यही कारण है कि "झूठे लौटें?" अक्सर कोड के अंत में एक ऑनक्लियर हैंडलर के भीतर शामिल किया जाता है।


1

किसी चीज को होने से रोकने के लिए आप रिटर्न का गलत इस्तेमाल करते हैं। इसलिए अगर आपके पास सबमिट पर कोई स्क्रिप्ट चल रही है, तो गलत लिखकर सबमिट को काम करने से रोका जाएगा।


1

जब एक फ़ंक्शन में रिटर्न स्टेटमेंट कहा जाता है, तो इस फ़ंक्शन का निष्पादन बंद हो जाता है। यदि निर्दिष्ट किया गया है, तो दिए गए मान फ़ंक्शन कॉलर को वापस कर दिया जाता है। यदि अभिव्यक्ति को छोड़ दिया जाता है, तो इसके बजाय अपरिभाषित लौटा दिया जाता है।

अधिक के लिए MDN डॉक्स पृष्ठreturn पर एक नज़र डालें ।


1

केवल तभी उपयोग करें जब आपके पास फंक्शन में कुछ वर्जन (कुछ परीक्षण द्वारा) हो या आप कुछ फंक्शन को रोकना चाहते हों, उदाहरण के लिए "एब्सबमिट"


1

इसके अलावा, https://www.w3schools.com/jsref/event_preventdefault.asp के माध्यम से पढ़ने के लिए यह छोटा और दिलचस्प लिंक।

परिभाषा और उपयोग

यदि यह रद्द करने योग्य है, तो StopDefault () विधि घटना को रद्द कर देती है, जिसका अर्थ है कि घटना से संबंधित डिफ़ॉल्ट क्रिया घटित नहीं होगी।

उदाहरण के लिए, यह तब उपयोगी हो सकता है जब:

Clicking on a "Submit" button, prevent it from submitting a form
Clicking on a link, prevent the link from following the URL

नोट: सभी ईवेंट रद्द नहीं हैं। किसी घटना को रद्द करने योग्य है या नहीं, यह जानने के लिए रद्द करने योग्य संपत्ति का उपयोग करें।

नोट: StopDefault () विधि DOM के माध्यम से किसी ईवेंट के आगे प्रसार को नहीं रोकती है। इसे रोकने के लिए stopPropagation () विधि का उपयोग करें।


का उपयोग करने पर विचार करें: developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault विरोध w3schools के रूप में। लेकिन ठोस जवाब।
बीबरबेटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.