2012-09-13 32 views
6

मैंने हाल ही में यह प्रश्न पोस्ट किया है: jqgrid edit form autocomplete="off" by default, how to change to autocomplete="on" क्योंकि मैंने देखा है कि डिफ़ॉल्ट रूप से jqGrid संपादन फ़ॉर्म ने सभी इनपुट तत्वों को autocomplete="off" विशेषता दी है। मैंने सोचा कि यही कारण है कि वेब ब्राउज़र jqGrid संपादन फ़ॉर्म के लिए सामान्य ऑटो-फिल कार्यक्षमता को लागू नहीं करेगा। इस समस्या को ठीक करने और सभी इनपुट तत्वों को बनाने के बाद autocomplete="on" विशेषता है, फिर भी jqGrid संपादन फ़ॉर्म के लिए कोई ऑटो-फिल नहीं है।jqgrid संपादन फॉर्म ब्राउज़र ऑटो-फिल कार्यक्षमता खो देते हैं

क्या किसी को पता है कि ऑटो-फिल इन फ़ॉर्मों के लिए क्यों काम नहीं करेगा? फॉर्म AJAX के माध्यम से सबमिट किए जाते हैं, इसलिए मुझे यकीन नहीं है कि यह इससे प्रभावित हो रहा है या नहीं।

बस स्पष्ट होने के लिए, मैं jQuery's autocomplete() के बारे में बात कर रहा हूं। मैं प्रपत्र ऑटोफिल कार्यक्षमता में निर्मित एक आधुनिक वेब ब्राउज़र (क्रोम, एफएफ) के बारे में बात कर रहा हूं।

उदाहरण के लिए कृपया मेरे jsfiddle उदाहरण फॉर्म here पर जाएं। आप जिस भी चीज को चाहते हैं उसके साथ फॉर्म भर सकते हैं, फिर submit पर क्लिक करें। पृष्ठ को रीफ्रेश करें और इसे फिर से भरें। आपके ब्राउज़र में होना चाहिए और को पहली बार भरने वाले मानों को याद और सुझाव दिया जाना चाहिए। यह मेरे लिए होता है।

दूसरी ओर, यदि आप jqGrid संपादन उदाहरण here पर जाते हैं। एक पंक्ति का चयन करें और छोटे संपादन बटन पर क्लिक करें (एक पेंसिल की तरह दिखता है)। आप पहले फ़ील्ड को नहीं बदल सकते हैं, लेकिन आप अन्य फ़ील्ड बदल सकते हैं। जो भी आप अन्य क्षेत्रों में चाहते हैं उसे रखें और submit पर क्लिक करें। पेज को दोबारा रीफ्रेश करें। मैं कई कंप्यूटरों और एफएफ और क्रोम दोनों का अनुभव कर रहा हूं कि यह फॉर्म किसी भी पिछले प्रविष्टियों को याद नहीं करता है।

यह समस्या है, क्या आप एक ही चीज़ का सामना कर रहे हैं? यदि हां, तो क्या आप जानते हैं कि ब्राउज़र के ऑटो-फिल कार्यक्षमता के साथ इन jqGrid रूपों को संगत बनाना संभव है?

धन्यवाद!

उत्तर

4

सभी ब्राउज़रों भंडारण और थोड़ा-अलग तरह से प्रपत्र फ़ील्ड्स के स्वत: पूर्ण संभाल है, वे सब पर भरोसा करते हैं पर आप मदद कर सकते हैं फॉर्म फ़ील्ड के मूल्यों को स्वयं स्टोर करने के लिए फॉर्म जमा किया जा रहा है। चूंकि jqGrid AJAX के माध्यम से फ़ॉर्म को संभालता है (अपडेट बटन एक लिंक सबमिट बटन नहीं है), रूपों को स्वयं वास्तव में सबमिट नहीं किया जाता है, जो बदले में ब्राउजर को स्वत: पूर्ण के माध्यम से बाद के उपयोग के लिए फ़ील्ड मानों को स्टोर करने की अनुमति नहीं देता है।फ़ील्ड मान स्टोर करने के लिए मजबूर कर रहा ब्राउज़र की

एक विधि, एक <iframe /> बनाने के लिए, क्लोन <form />, क्लोन <form /><iframe /> में संलग्न करें और AJAX के प्रपत्र प्रस्तुत करने की प्रक्रिया के हिस्से के रूप में सबमिट है।

उदाहरण के लिए अपने JSFiddle का संशोधित संस्करण लें।

उपर्युक्त उदाहरण में, 'मानक फॉर्म' भरें और सबमिट करें, पृष्ठ को फिर से लोड करें और फ़ील्ड अपेक्षा के अनुसार स्वतः पूर्ण हो जाएं। 'AJAX फ़ॉर्म' भरें और सबमिट करें, पृष्ठ को फिर से लोड करें और फ़ील्ड स्वतः पूर्ण नहीं हैं। अंत में, 'AJAX + iFrame Form' भरें और सबमिट करें, पृष्ठ को फिर से लोड करें और फ़ील्ड अब स्वतः पूर्ण होनी चाहिए।

* नोट: उपर्युक्त उदाहरण क्रोम, सफारी और फ़ायरफ़ॉक्स पर परीक्षण किया गया था। आपका मिलेज भिन्न हो सकता है।

$('#iframe_submit').bind('submit', function(e){ 
    e.preventDefault(); // Prevents Standard Submit 

    // Do AJAX Stuff Here... 

    // Create Clone of Form, Append to iFrame and Trigger Submit 
    // This Forces Autocomplete to Register 

    var $clone = $('#iframe_submit').clone(); 
     $clone.attr('id', 'iframe_clone'); // Only One ID Allowed 

     $('<iframe />').appendTo('body').contents().find('body').append($clone); 
     $('iframe').contents().find('#iframe_clone').submit(); 
    }); 

मुझे आशा है कि इस मदद करता है:

पूर्णता के लिए, यहाँ प्रासंगिक कोड है!

+0

स्पष्टीकरण के लिए धन्यवाद! यह अच्छा होगा अगर jqGrid इस कार्यक्षमता को डिफ़ॉल्ट पैकेज में जोड़ देगा, या इसे सक्षम करने का विकल्प होगा। –

0

हालांकि आपकी समस्या से बिल्कुल कुछ कोड देखने के लिए। मैं इस धारणा पर कूदने जा रहा हूं कि ब्राउजर के आधार पर ब्राउज़र सीमा के कारण यह पूरी तरह से संभव है। लेकिन। यह कुछ चीजों में से एक हो सकता है। या तो आपके फॉर्म तत्व <form></form> टैग में लिपटे नहीं हैं, और इस प्रकार स्वत: पूर्ण सक्षम ब्राउज़र उन तत्वों पर नहीं उठा सकते हैं जिन्हें आप स्वतः पूर्ण करना चाहते हैं।

2 आपके तत्वों के लिए अस्पष्ट नामों का उपयोग करके। आम तौर पर स्वत: पूर्ण सक्षम ब्राउज़र सामान्य रूप से प्रयुक्त फॉर्म तत्व नाम उदाहरण के लिए देखते हैं उदाहरण: first_name, firstname, name, ईमेल, उपयोगकर्ता नाम, street1, street_one .. और इसी तरह।

3 यदि आप फ़ंक्शन की तरह तैयार दस्तावेज़ पर जावास्क्रिप्ट के माध्यम से अपने ग्रिड को गतिशील रूप से लोड करते हैं तो यह पूरी तरह से संभव है। स्वत: पूर्ण करने से यह देखने के लिए स्वतः पूर्ण हो गया है कि पृष्ठ पर ऑटो पूर्ण होने के लिए कोई फॉर्म था या नहीं। जिसमें यदि मामला है, तो ब्राउज़र पूर्ण पूर्ण कार्यक्षमता आपके दस्तावेज़ तैयार सामग्री से पहले चल रही हो सकती है। कौन सा है कि अगर यह पता चला है मामला है .. यह पोस्टिंग सही रास्ते

jQuery AutoComplete Trigger Change Event

+0

कृपया अद्यतन प्रश्न देखें। ऐसे उदाहरण हैं जिन्हें आप आजमा सकते हैं। उदाहरणों में मैं अजीब नाम चुनता हूं, इसलिए यह समस्या नहीं है। इसके अलावा मैं jQuery से 'स्वत: पूर्ण' के बारे में बात नहीं कर रहा हूं जिसे आपने लिंक किया था। सहायता के लिए धन्यवाद! –