5

Pracowałem nad tym i nie mogę się nigdzie dostać. Zasadniczo mam autouzupełniania na kilka wejść według klasy, ale muszę uzyskać specyficzne dane wejściowe id, aby zbudować obiekt, aby opublikować ajax (muszę użyć POST dla tego projektu, nie GET).jQuery autouzupełnianie w klasie, jak uzyskać id

$(".input_autocomplete").autocomplete({ 
    source: function(request, response) { 
    // here is where I get the hash from local storage, 
    // reference the id and build the object 
    // tried this.id, $(this).prop('id'), no luck 
    $.ajax({ 
    url: '/somepath/filename.htm', 
    contentType: 'application/json', 
    dataType: 'json', 
    type: 'POST', 
    data: JSON.stringify(obj), 
    success: function(json) { 
     return { 
     label: item.label, 
     value: item.label 
     } 
    }, 
    error: function() { 
     // error handling 
    } 
    }); // ajax 
} // source 
}); 
+0

Jestem zupełnie nowy w jQuery, ale czy próbowałeś użyciu attr ("id") zamiast .prop ("id")? O ile wiem, id są atr, a nie rekwizyty ... Ponadto, ponieważ używasz składni kropek, $ (this) powinno być sposobem, aby przejść, ponieważ celujesz w obiekt jQuery. Mam nadzieję, że rozwiązuje problem. – rafaelbiten

Odpowiedz

10

Spróbuj:

$(this.element).prop("id"); 

czyli

this.element[0].id; 

Wewnątrz source zwrotnego, this dotyczy widget przykład. Aby uzyskać element, do którego dołączony jest widget, należy użyć this.element, który jest obiektem jQuery.

+0

Andrew, czy ma to coś wspólnego z .get (0), którego używają niektórzy ludzie? Jeśli tak, to jest coś, czego naprawdę nie mogę zrozumieć. Dlaczego konieczne jest wskazanie takiego elementu? = \ – rafaelbiten

+2

@ 7: Proszę zobaczyć moją aktualizację. 'this' wewnątrz autouzupełniania jest instancją widgetu, więc' this.element' jest elementem, do którego została zastosowana. 'element.get (0)' otrzyma pierwszy element obiektu jQuery i jest równoważny 'element [0]' powyżej. –

+0

Cóż, w tym scenariuszu ma to wiele sensu, ale czasami widzę ludzi używających .get (0), których nigdy bym sobie nie wyobraził. Niestety nie mogę teraz wymyślić dobrego przykładu. Postaram się zwrócić większą uwagę, gdy zobaczę to jeszcze raz i zobaczę, czy rozumiem, dlaczego został użyty. Dziękuję za poświęcenie czasu, aby mi to wyjaśnić. To była twoja część. – rafaelbiten

3

Próbowałem go w moim projekcie. Ten pracował dla mnie:

$(this.element.get(0)).attr('id'); 
+0

TAK, to działa świetnie. –

1

byłem w podobnej sytuacji do Ciebie, user1572796 i to pracował dla mnie:

$(this).prop("id"); 
Powiązane problemy