2009-09-29 19 views
5

पर Google ऑटो भरने का उपयोग करते समय ट्रिगर जावास्क्रिप्ट ईवेंट मेरे पास एक फॉर्म है, जिसमें मैं सबमिट बटन को अक्षम कर रहा हूं जब तक उपयोगकर्ता ने सभी अनिवार्य फ़ील्ड में टाइप नहीं किया हो। मैं शुरुआत में अनिवार्य फ़ील्ड पर एक टैब रखने के लिए ऑनकीप का उपयोग कर रहा था और सभी अनिवार्य फ़ील्ड भरने पर बटन को सक्षम कर रहा था।फ़ायरफ़ॉक्स

लेकिन मेरे पास उपयोगकर्ता शिकायत कर रहे थे कि वे Google टूलबार पर ऑटोफ़िल बटन का उपयोग करके फ़ॉर्म भर चुके हैं और सबमिट बटन अभी भी अक्षम है।

मैंने प्रत्येक इनपुट तत्व के लिए ऑनप्रोपर्टीएन्चेंज ईवेंट को कॉल करके आईई में इस समस्या को ठीक किया और यह अच्छी तरह से काम किया।

लेकिन फ़ायरफ़ॉक्स में, मुझे कोई ऐसा ईवेंट नहीं मिला जो Google ऑटोफिल बटन पर क्लिक होने पर ट्रिगर हो जाएगा।

बहुत सराहना की सहायता करें।

+0

यह 6 साल पहले एक समस्या थी (http://allinthehead.com/रेट्रो/102/द टाइम्स-वे-ऑन-ऑनचेंजिंग) और आज भी। –

+0

पवित्र नरक, ऑटोफिल शियाइट है: http://www.google.com/support/forum/p/Toolbar/thread?tid=7dcddc95f43dac19&hl=hi –

उत्तर

0

इस google toolbar support thread से निर्णय लेते हुए, ऐसा लगता है कि ऑटोफिल न केवल डेवलपर्स के लिए एक विशाल पिटा है, बल्कि इसे बंद करना भी बहुत मुश्किल है। अगस्त 09 के Google दावों के अनुसार यह विशेषता form पर विशेषता का सम्मान करेगा, लेकिन आज तक यह सुविधा अभी तक जारी नहीं लग रही है।

आप अपने इनपुट तत्वों देने के लिए सक्षम होने के लिए इस्तेमाल किया गैर sensical नाम (जैसे name="xx_Address_32423423") स्वत: भरण भ्रमित करने के लिए (और इस तरह प्रभावी रूप से उसे निष्क्रिय), लेकिन वे सबस्ट्रिंग भीतर को देखकर स्वत: भरण अधिक "बुद्धिमान" बनाया है यह निर्धारित करने के लिए कि आपके क्षेत्र को स्वत: भर दिया जा सकता है या नहीं (फिर से, उस थ्रेड में शिकायतों का निर्धारण)।

अपने मामले में, आप पेंच के साथ भी रोल कर सकते हैं और फ़ायरफ़ॉक्स के लिए onpropertychange के बराबर पा सकते हैं। DOMAttrModified event पर एक नज़र डालें। Specifially, event.attrName property पता चल सके कि value स्वत: भरण द्वारा बदल दिया गया है देखने की कोशिश:

function realOnChange(event) { 
    var attrName = event.propertyName || event.attrName; 
    if(attrName === 'value') { 
     // etc 
    } 
} 

event.propertyName के लिए चेक अपने वर्तमान onpropertychange कार्यान्वयन के साथ संगत रहने के लिए (कि यदि भी संभव है)।

1

आपके उत्तरों के लिए धन्यवाद। मुझे इस मुद्दे पर जल्दी प्रतिक्रिया देना पड़ा इसलिए मैंने अनिवार्य फ़ील्ड की जांच करने और सबमिट बटन को सक्षम करने के लिए 'setTimeOut()' फ़ंक्शन का उपयोग किया।

$().ready(function() { 
    CheckRequiredFields(); 
    timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000"); 
}); 

function AutoMonitorMandatoryField() { 
    if ($("#btnSave").attr("disabled")) { 
     CheckRequiredFields(); 
     timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000"); 
    } 
} 

crescentfresh - मैं DOMAttrModified घटना की जांच करेंगे और अगर मैं इसे me.Thanks

0

जटिल setTimeOut है और न ही setInterval जोड़ने के लिए कोई ज़रूरत नहीं है के लिए काम करने के लिए प्राप्त कर सकते हैं देखेंगे।

फ़ॉर्म का किसी भी फिर से भरे पाठ बॉक्स के "परिवर्तन" घटना को पकड़ने, हर refillable क्षेत्र के माध्यम से जाने के लिए और अगर यह खाली नहीं है लेबल को छिपाने

+1

परिवर्तन ईवेंट निकाल दिया नहीं गया है और मैं कोई अन्य ईवेंट नहीं देख सकता इसे ऑटोफिल पर निकाल दिया गया है। ऐसा लगता है कि $ (विंडो) करना है। लोड करें और $ ('इनपुट: -webkit-autofill') जांचें ... लेकिन फिर भी यह केवल कुछ काम करता है ... मुझे लगता है कि अगर आप अभी भी खोज रहे हैं तो यह कुछ भी बेहतर नहीं है अंतिम समाधान। –

+0

क्रोम किसी भी घटना को आग नहीं करता है जब यह ऑटोफिल करता है। – enyo