2017-02-20 1 views
1

태그를 입력하려면 간단한 입력이 필요합니다. MultiSelect에서 임시 입력을 허용하지 않습니다. 이미 드롭 다운에서 사용할 수있는 항목 만 선택할 수 있습니다. 검도 UI 태그 입력

http://demos.telerik.com/kendo-ui/multiselect/tag-mode

나는 AutoComplete을 시도했다. 쉼표로 구분 된 입력을 허용하지만 각 태그에 대한 닫기 아이콘이있는 태그의 CSS는 없습니다.

this page의 컨트롤이 필요합니다. 그러나 ASP.net AJAX를위한 그것의. jQuery에 대한 비슷한 예제를 찾을 수 없습니다.

왜 이렇게 일반적인 시나리오가 검도 UI에서 구현하는 데 실망합니까?

+0

당신이 *로 무엇을 의미 "각 태그의 닫기 아이콘과 태그의 CSS를 가지고 있지 않습니다"*? – DontVoteMeDown

+0

위의 "이 페이지"에있는 링크를 확인하십시오. 무언가를 입력하고 탭을 누르십시오. 입력 한 단어에 배경이 있고 'X'를 클릭하여 항목을 제거하는 방법을 확인하십시오. 그게 내가 바라는 행동이다. – Koder

+0

멀티플렉서 링크의 * 'MULTIPLE'TAG MODE * 예는 *이 페이지 * 링크와 거의 비슷하게 보입니다. 그렇지 않습니까? – DontVoteMeDown

답변

0

나는 비슷한 달성하기 위해 수행 한 몇 가지 코드를 기반으로 샘플 도장을 준비했습니다 :

http://dojo.telerik.com/orePO

여기에 떨어져가는이 많이 있습니다. 그러나 본질적으로 이것은 기존의 "태그"목록을로드 할 것이고 입력 된 값이 발견되지 않으면 사용자에게 그것을 컬렉션에 추가하라는 메시지를 표시합니다. 사용자 유형 뭔가가 발견되지 않는 것을 그래서

<script id="noDataTemplate" type="text/x-kendo-tmpl"> 
     <div> 
      No data found. Do you want to add new item - '#: instance.input.val() #' ? 
     </div> 
     <br /> 
     <button class="k-button" onclick="addTag('#: instance.element[0].id #', '#: instance.input.val() #')">Add new item</button> 
    </script> 

:

function addTag(widgetId, value) { 
     var widget = $('#' + widgetId).getKendoMultiSelect(); 
     var dataSource = widget.dataSource; 
     var item = { ProductID: 0, ProductName: value }; 
     dataSource.add(item); 
     widget.value(widget.value().concat([item.Value])); 

     dataSource.one("requestEnd", function(args) { 
        if (args.type !== "create") { 
         return; 
        } 

        var newValue = args.response[0].ProductID; 

        dataSource.one("sync", function() { 
         widget.value(widget.value().concat([newValue])); 
        }); 
       }); 

       dataSource.sync(); 



     var values = widget.dataItems(); 

     updateTagList(values); 


     return; 

    } 

이 기능은 NoDataTemplate 템플릿이라고 정의된다 :

여기서 중요한 부분은이 비트입니다 사용자가 컬렉션에 항목을 추가하라는 메시지를 표시합니다.

나는 또한에 컨트롤을 구성한 그때 목록에 아래의 태그를 보여 일부 스크립트를 추가 한

(당신이 그 (것)들을 추가되는 것을 볼 수 있습니다 만, 그래서. 그래서 여기에로 가지 않을 것이다.)

하나의 tag 요소 아래에있는 모든 태그를 숨겨서 다중 선택이 예기치 않게 커지지 않도록하십시오. multiselect에 대한 tagMode 옵션을 통해 변경할 수 있습니다.

은 알려 주시기 바랍니다에 확대/설명 다른 작업을해야하는 경우이 옵션은 (메모리에서) 2016 Q3

부터 존재하고있다 있습니다.

또한이 기능이 데모를 참조하십시오 http://demos.telerik.com/kendo-ui/multiselect/addnewitem

+0

이 모든 복잡성으로 인해 select2를 사용하고 싶습니다. 이미 addnewitem을 보았습니다. 그것은 내가 원했던 UX 종류가 아닙니다. MultiSelect는 사용자가 가끔씩 만 새 항목을 추가하고 드롭 다운하면 대부분 시간을 사용할 것이라고 가정합니다. 이것은 대부분의 시간에 사용자가 전에 입력하지 않은 것을 입력하는 태그와는 반대입니다 (적어도 내 유스 케이스에서는). 이것은 위의 솔루션을 매우 적합하지 않게 만듭니다.Telerik이 자주 요구하는 것을 가지고 있지 않은 것은 부끄러운 일입니다. 나는 진지하게 구매를 재고하고있다. 운이 좋았던 나는이 시험에 몇 시간 밖에 걸리지 않았다. – Koder

+0

이 경우에 Telerik에게 공정하기를 바라며, 이것은 매우 "구체적인"요구 사항이라고 생각합니다. 기능적인 관점에서 작업을 수행 할 수있는 기능을 제공했지만 사용자가 원하는 UX가 아닙니다. 프레임 워크를 확장 할 수 있기 때문에 예상 UX 경험을 제공하기 위해 제공 한 도구로 솔루션을 제공하는 것을 막을 수있는 방법은 없습니다. 사용자가'enter'를 누르거나 위젯이 포커스를 잃을 때 아이템을 추가하기 위해이 예제를 항상 바꿀 수 있습니다. –

+0

내가 제공 한 대부분의 코드는 실제로 컨트롤 아래에 태그를 표시하는 데 사용됩니다. –