2010-10-06 17 views
9

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

+0

मुझे एक ही समस्या है। –

+0

यहां भी वही समस्या है। समाधान के साथ अभी भी कोई भाग्य नहीं है। –

+1

मैं आपके द्वारा की जा रही समस्या को पुन: उत्पन्न करने में सक्षम नहीं हूं। यह [सरल डेमो] (http://jsbin.com/ogona4/7) मेरे पहले जेन आइपॉड टच पर पूरी तरह से काम करता है, आईओएस 3.1 – brianpeiris

उत्तर

2

शायद तुम फोकस घटना इस्तेमाल कर सकते हैं, jQuery में यह होगा:

$('#select2').focus(function() { 
    // update select2's elements 
}); 

हालांकि असली सवाल जब iPhone अधिभार में आता है, और जब घटना निकाल दिया है। और इस दृश्य में चयन विकल्प भी बदला जा सकता है।

+0

मुझे ओपी के समान समस्या मिली है। मैंने फोकस(), ब्लर() और चेंज() को आजमाया है, लेकिन आईफोन अभी भी सूची सामग्री को कैश कर रहा है जब तक कि आप अगली/पिछली बार फिर से हिट न करें। –

+1

यूप, वैसे, फोकस(), धुंध() और परिवर्तन(), उन कार्यों में से कोई भी कोशिश नहीं की। इसके अलावा, कुछ ऐसा क्यों न करें जो काम नहीं करता है और यहां तक ​​कि परीक्षण भी नहीं किया जाता है। –

0

मुझे अपनी साइट पर एक ही समस्या थी। मैं चुनिंदा नियंत्रण पर selectedIndex संपत्ति मैन्युअल रूप से मतदान करके इसे ठीक करने में सक्षम था। जैसे ही आप सूची में आइटम को "चेक" करते हैं, वैसे ही यह आग लगती है। यहां एक jQuery प्लगइन है जिसे मैंने ऐसा करने के लिए लिखा है:

$.fn.quickChange = function(handler) { 
    return this.each(function() { 
     var self = this; 
     self.qcindex = self.selectedIndex; 
     var interval; 
     function handleChange() { 
      if (self.selectedIndex != self.qcindex) { 
       self.qcindex = self.selectedIndex; 
       handler.apply(self); 
      } 
     } 
     $(self).focus(function() { 
      interval = setInterval(handleChange, 100); 
     }).blur(function() { window.clearInterval(interval); }) 
     .change(handleChange); //also wire the change event in case the interval technique isn't supported (chrome on android) 
    }); 
}; 

आप इसका उपयोग करते हैं जैसे कि आप "परिवर्तन" ईवेंट का उपयोग करेंगे। उदाहरण के लिए:

$("#mySelect1").quickChange(function() { 
    var currVal = $(this).val(); 
    //populate mySelect2 
}); 

संपादित: एंड्रॉयड जब आप एक नया मान का चयन करने के लिए उसे टैप का चयन ध्यान केंद्रित नहीं करता, लेकिन यह भी एक ही समस्या है कि iphone करता नहीं है। तो पुरानी change घटना को तारों से भी ठीक करें।

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