2013-03-15 6 views
1

tagit (http://webspirited.com/tagit/)를 사용하고 있으며 실제로는 지금까지 좋아합니다. 극복해야 할 걸림돌이 하나 있습니다. 태그 키워드를 입력하기 시작하면 마음이 바뀌고 페이지의 다른 부분을 클릭하면 (입력이 포커스를 잃어 버리게 됨) 태그가 추가됩니다. 나는 이것이 일어나기를 원하지 않는다. 방아쇠 키를 선택한 경우에만 태그를 추가하고 싶습니다. 제 경우에는 쉼표를 사용하십시오. 그렇지 않으면 마지막 태그 (아마도 부분 텍스트)가 쉼표가 추가 될 때까지 그냥 있어야합니다.tagit 태그를 클릭 할 때 태그를 추가했습니다.

이것은 내가 지금까지 가지고있는 코드입니다. 꽤 기본적인 구현이지만 위의 시나리오를 막을 수있는 방법은 없습니다.

$('#thename').tagit({ 
     tagSource:, 
     select:true, 
     tagsChanged:function (a, b) { 
     if(b=='added' || b=='popped'){ 
      submitForm(); 
     } 
     }, 
     triggerKeys:new Array('comma') 
    }); 
+0

모든 텍스트에 태그를 달거나 사전 결정된 태그 만 선택할 수 있어야합니까? – tymeJV

+0

안녕하세요. 내 현재 작업에서는 소스에서 미리 정의 된 옵션 만 사용할 수 있습니다. 그러나 앞으로 데이터베이스 또는 배열 조회없이 tagit의 추가 구현을 추가해야 할 수도 있습니다. – iltdev

답변

2

작은 해킹을 통해 어떻게되는지 알 수 있습니다.

- 유형 태그 입력 중
- 클릭이 (그래서 태그가 추가됩니다 : I 초점 밖으로에 태그를 추가하지 않도록 API 어디서나 찾을 수 없습니다, 그래서 나의 다음 솔루션은 다음을 수행하는 것이 었습니다)
는 -Programatically

는 다음 코드를 사용하여이 작업을 시도 태그 텍스트 입력을받을 제거 :

$("#thename").focusout(function() { 
    //Get the input text 
    var tagText = $(this).val(); 

    //Verify input is NOT empty 

    //Remove the tag that was just added 
    $("#thename").tagit('removeTag', tagText); 

을});

어떻게 작동하는지 알려주십시오.

편집 :

방금 ​​귀하의 의견을 알려 주셨습니다. 새 태그를 허용하고 싶지 않은 경우

allowNewTags: false, 

원래 코드의 태그 마크 업에 추가하십시오.

+0

답변을 주셔서 대단히 감사드립니다. 나는 그것을 아침에 시도하고 다시 당신에게 돌아갈거야 : – iltdev

+0

안녕하세요 tymeJV. 불행히도 포커스 아웃 코드가 제대로 작동하지 않았습니다. DOM을 살펴보면 $ ("thename")을 $ ("# thename .tagit-input")로 바꿨습니다. # # 이름은 단지 ul 일뿐입니다. 이것은 지금 텍스트를 잡아 내지 만, 포커스 아웃 코드를 실행하기 전에 태그가 select에 추가되면서 페이지가 이미 다시로드되기 시작할 때까지 작동하지 않습니다. 그 수수께끼! – iltdev

+0

tagit 태그에 allowNewTags : false를 추가하려고 시도 했습니까? 이렇게하면 알 수없는 태그를 입력 할 수 없게됩니다. – tymeJV

관련 문제