2013-08-07 2 views
2

Typeahead JS에서 사용자가 입력을 시작한 후 드롭 다운의 아래쪽에 나타나는 옵션을 추가하려고합니다. 현재 'onOpened'Custom Event을 사용하여 'tt-dropdown-menu'요소가 초기화 된 후 일부 HTML 추가를 트리거합니다.데이터 집합을 가져온 후 HTML 요소 추가하기

.on('typeahead:opened', onOpened) 
    function onOpened($e) { 
    $('.tt-dropdown-menu').html("<a href="">Add Option</a>"); 
} 

문제는 드롭 다운이 초기화 될 때 jQuery를 HTML이 예상대로 추가됩니다이다, 그 사용자는 jQuery를 HTML 그래서 jQuery를 HTML 아래에 추가됩니다의 자동 완성 결과로 새로운 데이터 세트의 요소를 입력 시작할 때 드롭 다운의 맨 아래에는 절대 나타나지 않습니다. 드롭 다운이 초기화 될 때 요소가 존재하지 않기 때문에 jQuery HTML을 데이터 세트에 추가 할 수 없습니다.

더 쉬운 방법이 있나요? 다른 사용자 지정 이벤트는이 시나리오를 다루지 않는 것 같습니다.

답변

1

dataset 한 개만있는 경우 데이터 세트에 footer을 추가하고 일반 HTML 문자열이 아닌 DOM 요소로 추가 할 수 있습니다. 원하는대로 이벤트를 변경할 수 있으며 변경 사항이 드롭 다운에 반영됩니다.

예 : dropdown-footer 당신이 당신의 DOM 어딘가에 가지고 div의 ID입니다

$('#myinput').typeahead({ 
    // rest of your regular stuff, like 'name', 'remote', etc. 
    footer: $('#dropdown-footer'), 
}); 

.... 이제 데이터 세트가 전환 될 때이 사라 어떠한 자동 완성 결과가 선택되지 않은 경우가 바닥 글 유지의 문제가 있지만,

$('#dropdown-footer').html('Hello') 
+0

큰 응답 Nitzen : 당신은 다음과 같은 일을 할 수 있습니다. 모든 이벤트에 대해 다른 기능을 설정하지 않습니다. 지나치게 복잡해 보입니다. –

+1

@ DanChristian : 감사합니다. 내 솔루션에서 이것을 극복하기 위해 실제로 "못생긴"무언가를합니다. 쿼리와 일치하는 용어가없는 경우 두 가지 작업을 수행하는'filter' 함수를 추가합니다. (1) 단일 더미 항목을 반환합니다. (2)는 #input에 "no-results"CSS 클래스를 추가합니다. 내 CSS 규칙은 # input.no-results-class의 자식이 표시되지 않으면 단일 제안을 표시하도록합니다. 'filter'는 CSS 클래스가 *있는 경우 그 클래스를 제거합니다. 그렇게하면 결과가없는 경우에도 보이지 않는 "더미"결과가 표시되고 내 바닥 글이 표시됩니다. HTH. –

+0

젠장, 정말 못 생겼어! 하지만 그건 내 문제를 해결해야 해! 감사. Typeahead에 GIT의 문제로 추가했습니다. 곧 더 세련된 솔루션을 곧 얻을 수 있습니다. 감사합니다 –

관련 문제