首先你需要知道助手text_field_with_auto_complete
和button_to_function
不是真正處理用戶操作,而只是生成HTML和JavaScript代碼。只有生成的JavaScript代碼才能與用戶進行交互。在這種情況下text_field_with_auto_complete
生成以下(大約):
<input type="text" id="participant_name" name="participant[name]" size="15" />
<div id="participant_name_auto_complete" class="auto_complete"> </div>
<script type="text/javascript">
var participant_auto_completer = new Ajax.Autocompleter (
'Participant',
'Name',
'/contentcom/discussions/get_users_for_auto_complete',
{method: 'GET', param_name: 'search'}
);
</script>
上面的代碼是用戶在得到他的瀏覽器。 如果您閱讀documentation的text_field_with_auto_complete
,那麼您會看到我們可以使用選項:after_update_element
。該選項允許我們指定當用戶選擇一個建議值時將被調用的JavaScript函數的名稱。
,我們需要做的:
- 編寫的JavaScript函數 將顯示在自動填充字段的任何地方的用戶選擇 值。
- 呼叫
text_field_with_auto_complete
與:after_update_element
這就是模板將如何看起來像:
<ul id="selected_participant_container"></ul>
<%= text_field_with_auto_complete :participant, :name, {}, {
:url => {:controller => "contentcom/discussions", :action => :get_users_for_auto_complete},
:method => :get,
:param_name => 'search',
:after_update_element => 'afterParticipantSelected'
}%>
<script type="text/javascript">
function afterParticipantSelected (el, value) {
var container = document.getElementById ('selected_participant_container');
container.innerHTML = value;
}
</ Script>
現在,當用戶選擇在自動完成字段中的值,它會在與元素顯示id = selected_participant_container
當然,你可以使用托克蘭提出的方法。
但我會建議你先學習HTML和Javascript的基礎知識。