2014-07-15 78 views
1

使用select2.js檢索綁定到隱藏輸入的遠程數據。選擇後無法在select2.js中顯示佔位符

<input type="hidden" id="departmentNameEntry" style="width:300px"/> 

我已在初始化佔位符:

 
$("#departmentNameEntry").select2({ 
     placeholder: "Search for a department", 
     minimumInputLength: 2, 
     ajax: { 
      url: "Handlers/DeptNameSearch_handler.ashx", 
      cache: false, 
      dataType: 'json', 
      type: 'GET', 
      data: function (term, page) { 
       return { 
        departmentNameFragment: term // search term entered into querystring for handler 
       }; 
      }, 
      results: function (data, page) { // parse the results into the format expected by Select2. 
       return { results: data }; 
      } 
     }, 
     formatResult: function (item) { 
      return item.text; 
     }, 
     formatSelection: formatDepartmentNames, 
     formatNoMatches: function (term) { 
      return 'no department name matches your query'; 
     } 
    }); 

但是,一旦一個項目被選中,佔位符一片空白。我如何將它重置爲原始字符串?我已經嘗試將init代碼放在一個單獨的函數中,並再次放棄它,但沒有快樂。我看到的其他問題似乎是特定於綁定到SELECT。我究竟做錯了什麼?

+0

不確定你的意思。佔位符應該變爲空白,而應該輸入選定的值。它只是一個佔位符。 – basher

+1

@basher:首次加載頁面時,用戶可以通過佔位符「搜索部門」來查看控件,因此他知道下一步該怎麼做。但是,如果用戶點擊轉義,或者清除頁面上的控件以啓動搜索操作,則佔位符爲空,並且他的指示消失。是的,我可以在標註「搜索部門」的控件上添加標籤,但如果可能的話,我認爲我會使用佔位符。 –

回答

0

我沒有足夠接近RTFM。

formatSelection選項要求您返回一個字符串,然後將其顯示在select2中以代替佔位符文本。這裏是我的功能:

 
function formatDepartmentNames(dept) { 
    $('#hfDepartmentID').val(dept.id); // when user has selected from the list, put id in an input 
    $('#hfDepartmentName').val(dept.text); // stash the dept name for later 
    DepartmentCurrentBossesGet(dept.id, dept.text); // call another function 
    DepartmentBossHistoryGet(dept.id); // call yet another function 
    $('.row4').show(); // show useful data on the page 
    return dept.text; // return the dept name so select2 can display it 
}

希望這可以幫助別人。