2011-01-03 15 views
44

यह कुछ अन्य लोगों के लिए समान डुप्लिकेट है, लेकिन मुझे लगता है कि मैं इस मामले में event.preventDefault() का उपयोग कर रहा हूं। http://jsfiddle.net/SeEw2/2/jQuery event.preventDefault() फ़ायरफ़ॉक्स में काम नहीं कर रहा है (JSFiddle शामिल)

असल में, सबमिट बटन पर क्लिक करें:

यहाँ एक JSFiddle आप के साथ कोड देख सकते हैं।

क्रोम में: कुछ भी नहीं होता - सही प्रतिक्रिया।

फ़ायरफ़ॉक्स में: पृष्ठ पुनः लोड, ओह नोएस!

तो फ़ायरफ़ॉक्स में पृष्ठ फिर से लोड क्यों हो रहा है और क्रोम नहीं? मैं इसे फ़ायरबगिंग कर रहा हूं और कोई त्रुटि नहीं आती है ...

+14

क्रोम पर यह काम करने का कारण यह है कि क्रोम हैंडलर ट्रिगर करने से पहले वर्तमान घटना के साथ 'window.event' को पॉप्युलेट करके आईई-निर्भर साइट पर एक हड्डी फेंकता है।(और आपके 'ईवेंट' जैसे एक निशुल्क संदर्भ - क्योंकि आप इसे अपने ईवेंट हैंडलर हस्ताक्षर में शामिल करना भूल गए हैं, क्योंकि [क्लेमडेसम पहली बार इंगित करने वाला था] (http://stackoverflow.com/questions/4585970/jquery-event -preventdefault-not-working-in-firefox-jsfiddle-include/4586007 # 4586007) - इसका मतलब है कि आप 'window.event' पर वापस आ रहे हैं।) फ़ायरफ़ॉक्स आईई-विशिष्ट कोड में ऐसी हड्डियों को फेंकता नहीं है। –

+0

बहुत जानकारीपूर्ण, धन्यवाद टी.जे. - मुझे नहीं पता था। – Jack

+2

कृपया प्रश्न में कोड पोस्ट करें, जेएसएफडल में नहीं। –

उत्तर

90

आपके कोड में परिवर्तनीय event प्रारंभ नहीं है।

http://jsfiddle.net/SeEw2/4/

निकालने:

$('#ajaxsearch').click(function(event) { 

     // Stop the Search input reloading the page by preventing its default action 
     event.preventDefault(); 
+0

आह! क्लेमडेसम धन्यवाद, यह याद करने के लिए मूर्खतापूर्ण कैसे है। अब यह फायरबग के त्रुटि कंसोल में सीधे दिखा रहा है ... hmmm :) – Jack

+7

मुझे आश्चर्य है कि यह क्रोम में क्यों काम करता है ... वही सटीक मुद्दा था और यह इसे ठीक करता था। –

+0

@Shikiryu: आपने मेरा दिन बचाया .... धन्यवाद :) – Pankaj

1

अपने function(event) की तरह घटना वस्तु गुजर नहीं क्योंकि, लेकिन मेरे सवाल जब आप type="button" कर सकते हैं क्यों यहां तक ​​कि इस सब के माध्यम से जाने के लिए और onclick है मान पास? संक्षेप में कि आप इस पूरी प्रक्रिया के साथ क्या कर रहे हैं।

+0

अरे, मैंने इसके बारे में क्यों नहीं सोचा ?! चीयर्स! अब मैं एक 'टाइप = "बटन" 'के साथ रोलिंग कर रहा हूं। मैं 'ऑनक्लिक 'का उपयोग नहीं कर रहा हूं, क्योंकि चीजों के बड़े दायरे में यह ऐसा करने के लिए अधिक सुविधाजनक है। – Jack

+0

मैं गलत हो सकता हूं (और यह प्रश्न के साथ कोई संबंध नहीं है) लेकिन मैं सोच रहा हूं: क्या एक प्रकार टाइप = "बटन" सबमिट के रूप में _enter_ कीबोर्ड स्पर्श को पहचानता है? वास्तव में jsfiddle पर इसका परीक्षण नहीं कर सकते हैं, इसे मेरे काम पर किसी अन्य तरीके से परीक्षण नहीं कर सकते हैं और मैं उत्सुक हूं :) – Shikiryu

+0

जब आप टेक्स्टबॉक्स पर फ़ोकस के साथ एंटर दबाते हैं, तो ऐसा नहीं होता है। लेकिन बटन पर फोकस (शायद टैब्ड) के साथ एंटर दबाकर, हाँ, यह इसे सबमिट के रूप में पहचानता है और 'preventDefault() 'होता है। क्या यही मतलब है तुम्हारा? :) – Jack

8

आह मुझे उस अतीत में एक ही समस्या है। बल्कि event.preventDefault से() करने के लिए घटना गुजर कोशिश:

function ie8SafePreventEvent(e){ 
    if(e.preventDefault){ e.preventDefault()} 
    else{e.stop()}; 

    e.returnValue = false; 
    e.stopPropagation();   
} 

मैं जानता हूँ कि यह आईई कहते हैं, लेकिन मैं एक क्लिक करें घटना की तलाश में = के बाद से]

+0

अच्छी चाल! इसे साझा करने के लिए धन्यवाद :) –

1

करने के बजाय इसके साथ एक समस्या थी कभी नहीं किया है सबमिट बटन पर, $(form).submit हैंडलर का उपयोग क्यों न करें?

जब तक आप हैंडलर के अंत में 'झूठी वापसी' करते हैं, तो पृष्ठ फिर से लोड नहीं होगा।

+0

यही वह है जो मैं अब उपयोग कर रहा हूं, ऐसा करने का एक बेहतर तरीका है। धन्यवाद! – Jack

0

मैंने इसे इस तरह हल किया, क्योंकि मेरा कोड थोड़ा अलग है क्योंकि यह अन्य लोगों के लिए उपयोगी हो सकता है। मेरा प्रारंभिक कोड इस तरह दिखता था।

<form id="enrollstudentform" onsubmit="return enrollStudents()"> 
    ... 
</form> 

मेरे js समारोह

function enrollStudents() { 
    // Stop Form. 
    event.preventDefault(); 
    // Other code 
} 

मैं पड़ा समारोह कॉल में पैरामीटर घटना गुजरती हैं और समारोह में इसे प्राप्त कैसा दिखता था।

<form id="enrollstudentform" onsubmit="return enrollStudents(event)"> 
    ... 
</form> 

js कोड:

function enrollStudents(event) { 
    // Stop Form. 
    event.preventDefault(); 
    // Other code 
} 

मुझे आशा है कि यह मदद करता है।

संबंधित मुद्दे