2010-07-28 19 views
8

दर्ज करने पर नहीं चुनता है मैंने एक इनपुट बॉक्स को स्वत: पूर्ण करने के लिए jquery-ui का उपयोग किया है और चयनित आइटम से छुपा मूल्य सेट किया है।jquery-ui autocomplete

यह मैं

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

विकल्प का उपयोग किया था (अब गलत हो सकता है, हाथ में कोड की जरूरत नहीं है, लेकिन यह मेरे सवाल तक काम करता है ...)

यह जब काम करता है माउस के साथ मेनू से एक आइटम का चयन करें, हालांकि अगर मैं कुछ टेक्स्ट दर्ज करता हूं और एंटर के साथ एक आइटम चुनता हूं - यह कुछ भी नहीं करता है, तो ऐसा लगता है कि चयन स्वतः पूर्ण कार्य द्वारा नहीं चलाया जाता है। हालांकि, बॉक्स से बाहर टैबबिंग चयन को ट्रिगर करता है।

मैंने फोकस और परिवर्तन का उपयोग किया है: मैं जो फ़ील्ड चाहता हूं उसे अपडेट करने के लिए भी, लेकिन मुझे लगता है कि यह अधिक है, क्या यह सुनिश्चित करने के लिए कि वास्तव में कोई उपयोगकर्ता ध्यान केंद्रित, परिवर्तन और चयन करना आवश्यक हो, सूची से एक आइटम का चयन करता है जिसे वास्तव में चुना जाएगा।

धन्यवाद।

rofly: मैं jQuery ui को स्वत: पूर्ण उपयोग कर रहा हूँ, यह कोड आपको देना है, लेकिन यह (jquery.ui.autocomplete.js से) इस तरह दिखता है


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; 

बस इतना ही dandy लग रहा है, तो मुझे यकीन नहीं है कि यह इस वजह से विफल रहता है।

मेरे कोड (document.read में लिपटे()

$("#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); 
} 
});

हां, तो समस्या है, यह काम करता है जब उपयोगकर्ता माउस के साथ मेनू से चयन किया जाता है और जब क्षेत्र से बाहर टैब इस तरह है (keyUp, कुंजी डाउन चुनने के लिए डाउन, काम करता है) लेकिन keyUp, itme को चुनने के लिए डाउन डाउन, फिर एंटर करें, और कुछ भी नहीं होता!

+0

अगर आप एक छिपा इनपुट सेट यह एक अजीब आईडी 'myDiv' .... शायद' बदल गया है:: सच

यहाँ का जवाब देखें समारोह (घटना, यूआई) {... $ ("# myDiv")। val (ui.item.value) ...} ' – Ties

उत्तर

6

एक समान उदाहरण jQuery 1.4.2 और jQuery-UI 1.8.7 के साथ मेरे लिए काम करता है। एक चेतावनी, प्रविष्टि केवल सूची से किसी आइटम का चयन करते समय काम करने लगती है। यदि आप एक नई प्रविष्टि बना रहे हैं जो अस्तित्व में नहीं है, तो एंटर दबाकर ईवेंट को चुनने या बदलने के लिए ट्रिगर नहीं होगा। मुझे बी उस स्थिति को उड़ाने के लिए एक अलग घटना हैंडलर।

+1

काम करता है यहां सटीक कोड है जिसका उपयोग मैं एंटर कुंजी को कैप्चर करने के लिए कर रहा हूं। $ ("# YourAutoComplete") कुंजी दबाने (समारोह (ई) { \t अगर (e.which == 13) { yourFunction ($ ('# yourAutoComplete') वैल());।। वापसी झूठी; \t} \t} उम्मीद है कि मदद करता है! – JeffSea

+0

@iamct के उत्तर पर एक नज़र डालें! ऑटोफोकस पहले आइटम को फोकस करता है, और इस प्रकार कुंजी दर्ज करता है इसे चुनता है! –

2

यह मेरे लिए काम करता था जहां मैं ऑटो पूर्ण करने के बाद एक फॉर्म सबमिट कर रहा था।

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

Search on Click with Jquery's Autocomplete

1

से इस परम है? सेट
ऑटोफोकस: https://stackoverflow.com/a/9243511/74585

+1

यह वही था जो मैं खोज रहा था, शर्म की बात है कि यह स्वीकार्य उत्तर नहीं है! –