IE

6
Script.aculo.us Otomatik tamamlayıcı sorunu

IE'de Script.aculo.us Otomatik Tamamlayıcı denetimi (IE6 & 7'de denedim) ile ilgili bir sorunla mücadele ediyorum. Sayfa yüklenildikten sonra ilk karakterin metin kutusuna girilmesi için önerileri görünmüyor. İlk başarısızlıktan sonra kontrol, gerektiği gibi çalışır.IE

Öneri verilerinin sunucudan doğru bir şekilde döndüğünden emin oldum; Sorun, öneri öğesinin konumlandırılmasıyla ilgili bir şey gibi görünmektedir, çünkü sayfada göreceli olarak konumlandırılmış diğer öğeler, önerilerin görünmesini beklediğiniz anda konumun dışına taşmaktadır.

Böyle bir sorunu duyan veya nasıl düzeltileceği konusunda herhangi bir öneriniz var mı?

Düzenleme: Chris'e yanıt olarak, partialChars parametresini 1 olarak ayarladım ve denetim, denediğim tüm diğer tarayıcılarda (Firefox, Safari, Opera ve Chrome'un en son sürümleri) çalışıyorum. Muhtemelen ilk başta bunu netleştirmeliydim. Teşekkürler.

+3

Bu benim de sorunumdu, teşekkürler! Herkese ve her şeye yapılan oylamalar! Şimdi bazı iyi kazanılan ping pong için kapalıyım. –

cevap

2

Sorun sadece IE'de mi yoksa tüm tarayıcılarda mı? İlk karakterin yok sayılması aslında Tamamlayıcı için varsayılan değerdir. controls.js yılında 2. varsayılan bu alan için dokümanlar söylüyorlar alan adında partialChars vardır Autocompleter.Local adında bir sınıf vardır: - partialChars -

// kaç karakter
tetikleme önce girmek için // kısmi bir eşleşme (
// öğesini tanımlayan minChars'ın aksine, herhangi bir eşleşme yapmak için kaç karakter gerekir
///hiç). Varsayılanlar 2.

1

Hala bu sorunun neden tam olarak ne olduğunu bilmiyorum, ancak bunu elde etmek için bir hack ile gelmeyi başardım.

new Ajax.Autocompleter(textInputId, suggestionsHolderId, suggestionsUrl, params); 

//Hack 
Event.observe(window, 'load', function() 
{ 
    try 
    { 
     Position.clone($(textInputId), $(suggestionsHolderId), 
      { setHeight: false, offsetTop: $(textInputId).offsetHeight}); 
    } 
    catch(e){} 
}); 
5

Ben gerçekten tam aynı sorunu yaşıyorum: Fikir sayfa yüklendiğinde yolumdan almak için normalde ilk karakter girişini yetersizliğine neden olmaktadır işleme yapmaktır. Sorun yalnızca IE'de (ayrıca 8.0 beta sürümü)

Her ikisi de Firefox ve Chrome denedim, hiçbir şey sorun yok.

Diğerlerine göre bu, HTML dosyasındaki DOCTYPE bildirimi nedeniyle oluşur. Burada kontrol edin: http://prototype.lighthouseapp.com/projects/8887/tickets/32-ajax-autocomplete-in-ie-with-doctype

hata da yakut geliştirici panoları bir bilet var: http://dev.rubyonrails.org/ticket/11051

Hem bağlantılar sorunu gidermek için çözümler var.

Umarım hata prototip/scriptaculous :) hack için

3

Çok teşekkür sonraki sürümünde düzeltilecektir. Bunu kendim kullandım, ancak değiştirdim, böylece yalnızca Ajax.Outocompleter aşağıdakileri yaparak kullanıldığında çağrılır. Geri arama gerçek isteği sadece o anda DIV konumlandırma, yapılır hemen önce çağrılır yana

function positionAuto(element, entry) { 
    setTimeout(function() { 
     Element.clonePosition('choices_div', 'text_element', { 
     'setWidth': false, 
     'setHeight': false, 
     'offsetTop': $('text_element').offsetHeight 
    }); 
    }, 300); 
    return entry; 
} 

new Ajax.Autocompleter('text_element', 'choices_div', [url to web service], { 
    paramName: 'fulltext', 
    minChars: 2, 
    callback: positionAuto, // See above 
    [etc...] 

en mantıklı. Ve pencere yeniden boyutlandırılmalı veya kaydırılsa bile, DIV'nin doğru şekilde yerleştirildiğinden emin olun. Çıldırtıcı olan şey, onu sürekli çalışmak için, onu "setTimeout()" içine sarmak zorunda kalmam.Farklı zamanlama ayarlarıyla çok fazla deneme yapmadım, ancak daha düşük bir zaman aşımı eşiği varsa, bilmek isterim.

IE 8 & 7'de test edildi ve çok iyi çalışıyor. Ve diğer gerçek tarayıcılarla da çalışır. Umarım bununla uğraşırken bazı kodlayıcıların baş ağrısını kurtarır.

2

IE8/IE9'da bu sorunla uğraştıktan sonra bir CSS kesmek kullanarak sonuçlandırdım. Buradaki yöntem, mutlak olarak konumlandırılmış bir kap içinde pozisyonu göreceli olarak zorlamaktır. Seçeneği diğer unsurlara göre yüzdürmek için ekstra konteyner gereklidir. Scriptaculous/Prototype IE 8 Autocomplete disappearing problem:

<div class="acwrap"> 
<div id="autocomplete_choices" class="autocomplete"> 
</div> 
</div> 

fikri burada kökenli şu şekildedir: Benim HTML kodunda

div.acwrap { 
    position: absolute; 
    height: 40px; 
} 

div.autocomplete { 
    position: relative !important; 
    top: -5px !important; 
    left: 0px !important; 
    width:250px; 
    margin:0; 
    padding:0; 
} 

Ben sınıfları kullanılır.