2010-07-28 21 views
8

girişini seçmez Giriş kutusunu otomatik olarak tamamlamak ve seçilen öğeden gizli bir değer ayarlamak için jquery-ui'yi kullandım.jquery-ui autocomplete,

Ben

select: function(event, ui) { ...$("#myDiv").val(ui.item.value)... } 

seçeneği kullanılarak yaptığımız bu

O zaman çalışır (..., şimdi yanlış olabilir el altında kod yok, ama benim soruya kadar çalışır) fareyle menüden bir öğe seçin, ancak sadece bir metin girip Enter tuşuna basarak bir öğe seçersem - hiçbir şey yapmazsa, otomatik tamamlama işlevi tarafından hiç çalışmazsa budur. Ancak, kutudan sekme yapmak seçimi tetikler.

Odaklama ve değiştirme kullandım: Ayrıca istediğim alanları güncellemek için, ancak bunun bir kullanıcı, ancak emin olmak için tüm odak, değişiklik ve seçimleri belirtmek için gerçekten gerekli olması gerektiğini düşünüyorum. Listeden seçilecek bir öğe seçer.

Teşekkür ederiz.

rofly: Ben jquery-ui otomatik tamamlama kullanıyorum tüm züppe görünüyor


case keyCode.ENTER: 
       case keyCode.NUMPAD_ENTER: 
        // when menu is open or has focus 
        if (self.menu.active) { 
         event.preventDefault(); 
        } 
        //passthrough - ENTER and TAB both select the current element 
       case keyCode.TAB: 
        if (!self.menu.active) { 
         return; 
        } 
        self.menu.select(event); 
        break; 

, bu vermek kodu vardır, ancak (jquery.ui.autocomplete.js itibaren) şöyle, Bu yüzden bundan dolayı başarısız olup olmadığından emin değilim.

Kodum (document.read sarılmış() alanın dışına sekme kullanıcı fare ile menüden seçerek VE edildiğinde

$("#someDiv").attr("autocomplete", 'off'); 
$("#someDiv").autocomplete({ 
source: function(request, response) { 
if (request.term in cache) { 
response(cache[ request.term ]); 
return; 
} 
$.ajax({ 
url: "giveMeJSON.jsp", 
dataType: "json", 
data: request, 
success: function(data) { 
cache[ request.term ] = data; 
response(data); 
} 
})}, 
minLength: 1, 
delay: 300, 
select: function(event, ui) { 
$("#someDiv").val(ui.item.label); 
$("#hiddenDiv").val(ui.item.value); 
} 
});

yüzden sorun şu ki bu işler böyledir (keyUp, keyDown seçmek için sekme, çalışır) ama keyUp, keyEown itme'yi seçmek, daha sonra girmek ve hiçbir şey olmuyor!

+0

bunu bir garip id 'myDiv' .... belki' değişim sahip bir gizli girişi ayarlarsanız: Burada answer

gerçek:
otomatik odaklama ayarlamak function (event, ui) {... $ ("# myDiv"). val (ui.item.value) ...} 'çalışır – Ties

cevap

6

Benzer bir örnek jQuery 1.4.2 ve jQuery-ui 1.8.7 ile benim için çalışır. Bir uyarı, Enter sadece listeden bir öğe seçerken işe yarar. Var olmayan yeni bir giriş oluşturuyorsanız, Enter tuşuna basmak seçimleri tetiklemez veya olayları değiştirmez. Bu durumu uçurmak için ayrı bir olay işleyicisine girin.

+1

Enter tuşuna basmak için kullandığınız tam kod İşte. $ ("# YourAutoComplete") tuşa basma (function (e) { \t eğer 13) { yourFunction ($ ('# yourAutoComplete') val()) (e.which ==;.. dönüş false; \t} \t} Umarım yardımcı olur! – JeffSea

+0

@iamct'ın yanıtına bir göz atın Autofocus, ilk öğenin odaklanmasını sağlar ve bu nedenle anahtar girer! –

1

itibaren

$("input#searchbox").autocomplete({ 
    source: autocomplete, 
    select: function(event, ui) { } 
    $("input#searchbox").val(ui.item.value); 
    $("#searchform").submit(); 
    } 
}) 

bu param var? https://stackoverflow.com/a/9243511/74585

+1

Tam olarak aradığım şey buydu, bunun kabul edilen cevap olmadığına ayıp! –