작은 위젯 검색 - "리턴"키를 눌렀거나 결과를 선택했는지 어떻게 확인합니까?

질문:

주소를 검색할 때 자동으로 제안된 값을 던질 수 있는 검색 상자가 있습니다.
검색 이벤트를 트리거하는 몇 가지 방법이 있습니다.
  • 사용자가 주소를 입력하기 시작하고(자동 제안값 무시) 리턴 키
  • 를 클릭합니다.
  • 사용자가 주소를 입력하기 시작하고 과정 중간에 자동 제안 목록
  • 에서 값을 선택합니다
    이 장면에서 이벤트 처리 프로그램에서 선택했는지 Enter 키를 눌렀는지 확인할 수 있는 방법이 있습니까?
    Javascript
    var esriMap = new Map("esriMap", {
        basemap: "topo",
        center: [-12.4260, 31.3403],
        zoom: 12
    });
    var search = new Search({
       map: esriMap,
    }, dom.byId("esriSearch"));
    search.startup();
    search.on("select-result", searchboxResult); // the event handler
    
    function searchboxResult(e)
    {
      // determine "Enter" key versus "Selection from auto-suggest"
    }
    

    답안

    물론 지도에 선택을 표시하거나 Enter 키를 눌렀는지 확인할 수 있는 방법이 있다.
    다음은 이 기능을 실현하는 작업 코드-
    require([
    
            "esri/map",
            "esri/dijit/Search",
            "dojo/on",
            "dojo/domReady!"
    
          ], function (Map, Search, on) {
             var map = new Map("map", {
                basemap: "gray",
                center: [-120.435, 46.159], // lon, lat
                zoom: 7
             });
    
             var search = new Search({
                map: map
             }, "search");
             search.startup();
             
            var isEnter= false;
            on(search.inputNode, "keypress", function(evt){
              isEnter = evt.keyCode == 13;
            });
            
            search.on("select-result", searchboxResult); 
    
             function searchboxResult(e)
               {
                alert(isEnter?"By Enter Selection": "By Suggestion Selection");
                // determine "Enter" key versus "Selection from auto-suggest"
              }
    
          });
    html,
          body,
          #map {
             height: 100%;
             width: 100%;
             margin: 0;
             padding: 0;
          }
          #search {
             display: block;
             position: absolute;
             z-index: 2;
             top: 20px;
             left: 74px;
          }
    <link rel="stylesheet" href="https://js.arcgis.com/3.18/esri/themes/calcite/dijit/calcite.css">
       <link rel="stylesheet" href="https://js.arcgis.com/3.18/esri/themes/calcite/esri/esri.css">
    
    <script src="https://js.arcgis.com/3.18/"></script>
    
    <body class="calcite">
       <div id="search"></div>
       <div id="map"></div>
    </body>
    도움이 되었으면 좋겠습니다:)