2011-02-01 9 views
5

में प्रदर्शित नहीं किया गया है नमस्ते (यह समुद्रतट मेलिंग सूची पर मेरी पोस्ट की एक प्रति है; पहले स्टैक ओवरफ्लो पर प्रयास करें), मुझे ड्रॉप के रेंडर डिस्प्ले को कैसे प्राप्त किया जा सकता है फ़ायरफ़ॉक्स में किसी अन्य सत्र से अद्यतन चयन दिखाने के लिए सूची का चयन करें? (मैं 3.6.13 का उपयोग कर रहा हूं)एचटीएमएल <select> टैग का उपयोग करते समय, 'चयनित' मान को फ़ायरफ़ॉक्स

यह समस्या क्रोम, आईई या ओपेरा में दिखाई नहीं देती है।

यहां परिदृश्य है: मेरे पास एक ड्रॉप-डाउन सूची में प्रदर्शित विशेषता के साथ एक डोमेन ऑब्जेक्ट है। कुछ अन्य सत्र विशेषता अद्यतन करता है। मैं अपना प्रदर्शन रीफ्रेश करता हूं, लेकिन प्रस्तुत चयन नहीं बदलता है। फ़ायरबग का उपयोग करके, जेनरेट किया गया एचटीएमएल अपडेटेड चयन दिखाता है। यह मूल HTML ज्ञान हो सकता है, लेकिन क्या प्रदर्शित मूल्य बदले गए 'चुने गए' विकल्प को दिखाने के लिए अपडेट नहीं होना चाहिए? या क्या मूल्य केवल प्रारंभिक पृष्ठ प्रदर्शन पर सेट किया जाना है और फिर केवल उपयोगकर्ता कार्रवाई द्वारा सेट किया जाना चाहिए?

उदाहरण: मेरे पास एक क्लास वेरिएबल #testStateListSelection के साथ एक डेमो सीसाइड घटक है जिसे समुद्रतट सत्र में 'एक' में चुना गया है। यदि मैं किसी अन्य समुंदर के किनारे सत्र में मान को 'तीन' में बदलता हूं, तो प्रदर्शित मूल्य फिर से प्रस्तुत करने के बाद मूल सत्र में 'एक' के रूप में रहता है, भले ही जेनरेट किए गए HTML में "चयनित" दिखाता है "तीन"।


renderSelectionListOn: html 
    html form: [ 
     html select 
      list: #('one' 'two' 'three' 'four' 'five'); 
      selected: self class testStateListSelection; 
      callback: [:value | self class testStateListSelection: value]. 
     html break. 
     html submitButton 
      callback: [Transcript cr; show: self class testStateListSelection]; 
      with: 'Save'] 

...the displayed value shows 'one', even though the HTML is... 

<select name="1">
<option value="1">one</option>
<option value="2">two</option>
<option value="3" selected="selected">three</option>
<option value="4">four</option>
<option value="5">five</option>
</select>

मैं कैसे ड्रॉप-डाउन चयनित मान 'तीन' दिखाने के लिए मिलता है?

Btw: सब मुझे पता है एचटीएमएल & ब्राउज़र के व्यवहार के बारे में मैं समुद्रतट कोडिंग से सीखा है, तो मैं एक विषम परिप्रेक्ष्य ;-)

किसी भी मदद के लिए धन्यवाद हो सकता है।

+0

आप जब कहते हैं कि "फिर से प्रतिपादन के बाद" - ब्राउज़र एक और पृष्ठ पर भेज दिया है, या आप बस ताज़ा किया है (F5 या समकक्ष) पन्ना? – Gareth

+0

बस एक ताज़ा करें ... F5 या "वर्तमान पृष्ठ को पुनः लोड करें" बटन –

उत्तर

8

समस्या यह है कि, जब आप अपना पृष्ठ रीफ्रेश करते हैं, तो आपका ब्राउज़र याद कर रहा है कि कौन सा विकल्प पहले चुना गया था। यह सुविधा लंबे रूपों के दौरान अपना फॉर्म डेटा खोना कठिन बनाने के लिए डिज़ाइन की गई है और Mozillazine forums

पृष्ठ को रीफ्रेश करने के बजाय थोड़ा सा चर्चा की गई है। यदि आप पता बार पर जाकर और ताज़ा दबाकर पृष्ठ को "ताज़ा" लोड करते हैं, तो आपको अपडेट किए गए पृष्ठ को फिर से लोड किया जाएगा - अद्यतन select

+0

यह मुझे पागल कर रहा था। इस उत्तर के लिए धन्यवाद। –

+0

मुझे यह जानकर उत्सुकता होगी कि ब्राउजर को चयनित मूल्य के आधार पर डिस्प्ले अपडेट करने के लिए मजबूर करने के लिए क्या किया जा सकता है, बिना उपयोगकर्ता को पता बार से सामग्री को पुनः लोड करने के लिए कहा जाता है। – mathieu

1

जब भी पृष्ठ को रीफ्रेश किया जाता है तो self class testStateListSelection चलाया जाता है।

वास्तव में आपके द्वारा प्रदान किया गया कोड मेरे लिए पूरी तरह से काम करता है। क्या आप सुनिश्चित हैं कि एक्सेसर्स अपेक्षित काम करते हैं?

testStateListSelection 
^testStateListSelection " <-- forgetting the return is a common problem " 

testStateListSelection: aString 
    testStateListSelection := aString 
+0

हां, एक्सेसर्स सही हैं। मैं ट्रांसक्रिप्ट में चयनित विकल्प गूंजता हूं और जेनरेट किया गया HTML चयन को दर्शाता है। समस्या केवल फ़ायरफ़ॉक्स में दिखाई देती है और केवल तभी जब #testStateListSelection मान किसी अन्य सत्र द्वारा बदला जाता है। –

2

समस्या का एक अन्य कारण यह हो सकता है कि आपका ब्राउज़र आपके अंतिम सबमिशन के आधार पर आपके लिए फ़ॉर्म को स्वत: पूर्ण करने का प्रयास करता है। सुनिश्चित करें कि आपने इस सुविधा को अपने वेब ब्राउज़र की वरीयताओं में अक्षम कर दिया है।नहीं फिर से प्रस्तुत करना होगा

html form noAutocomplete; with: [ ... 
+1

उत्कृष्ट। यह काम करता है। उत्पन्न एचटीएमएल फॉर्म में स्वत: पूर्ण = "बंद" जोड़ें और ब्राउज़र को रीफ्रेश होने पर अपडेट किया गया मान सही तरीके से दिखाता है। धन्यवाद। –

1

जावास्क्रिप्ट का उपयोग कर पृष्ठ को ताज़ा करने हैं ...

window.location.reload(); 

...: तुम भी नहीं स्वत: पूर्ण करने के लिए एक अनौपचारिक विशेषता के साथ फार्म टैग बताने के लिए कोशिश कर सकते हैं चुनिंदा तत्व नए स्रोत एचटीएमएल के कहने के बावजूद वे अपने गतिशील मूल्यों को बनाए रखेंगे।

फिर से प्रस्तुत करने के लिए, का उपयोग करें का चयन करें तत्वों के लिए मजबूर करने के लिए ...

window.location.reload(true); 
संबंधित मुद्दे