2011-09-16 15 views
5

Bir jquery ui seçiminin "tersine" nasıl yapılacağını anlamaya çalışıyorum. Birisi bir seçenek seçmediğinde ve sadece "jquery bir şey" çıktığında: "yeni girdi: jquery bir şey" olacaktır. Ancak "jquery" seçildiğinde, bir şekilde "listeden seçilmiş: jquery" ye sahip olmak ve tuş basışını önlemek çok güzel olurdu. Ancak, her iki olay da ateşlenir. Bunu bir ya da diğeri yapmaya çalışıyorum.jquery ui otomatik tamamlama: yalnızca öğe seçilmediğinde tetikle

<input class="test" type="text" /> 

<script> 
$('.test').autocomplete({ 
    select: function (event, ui) { 
     alert('selected from list: ' + ui.item.label); 
     event.preventDefault(); 
     return false; 
    }, 
    source: ["jquery", "jquery ui", "sizzle"] 
}); 
$('.test').live('keypress', function (e) { 
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { 
     alert('new input: ' + $(this).val()); 
    } 
}); 
</script> 

Bu anahtar UI menüden bir seçenek seçmek için kullanılır "enter" varsayımıyla gidiyor.

+0

Bunu çalıştırmak gösterir tuşları gibi yazın, ancak bir değer seçtiğimde, ok tuşlarını kullanarak bile herhangi bir tuşa basma olayını göstermez. Lütfen sorunu açıklığa kavuşturun ya da en azından bunun nihai kullanımının ne olduğunu anlat, böylece nasıl yardım edeceğimi daha iyi anlayabiliyorum. –

+0

Uyarı vermek için onu değiştireceğim. Console.log firebug için. Ayrıca girişlerinizi "enter" tuşu ile yapın. – Parmenides

cevap

8

Bunu, autocompletechange olayını kullanarak gerçekleştirebilirsiniz. Kullanıcı bir seçenek seçilmiş ya da bir şey yazdıysanız bu olayı kullanarak, belirleyebilir listesinde değildi:

$("#auto").autocomplete({ 
    source: ['hi', 'bye', 'foo', 'bar'], 
    change: function(event, ui) { 
     console.log(this.value); 
     if (ui.item == null) { 
      $("span").text("new item: " + this.value); 
     } else { 
      $("span").text("selected item: " + ui.item.value); 
     } 
    } 
}); 

Örnek:http://jsfiddle.net/Ne9FH/

+1

Bu, tuşa basma ve dinamik veri kaynağı ile değişiklik olayını tetikleyebilseydim harika çalışırdı. Ama en iyi cevabı burada ve veri kaynağı hakkında bir şey bahsetmedim. – Parmenides

İlgili konular