有誰知道如何使用AutoCompleteExtender(來自AJAX Control Toolkit)阻止用戶輸入任何不是建議值的東西?如何將AutoCompleteExtender設置爲只允許自動完成列表中的值?
3
A
回答
1
首先,檢查您是否寧願使用新的AjaxToolKit組合框。
如果你不能(例如,如果你使用的是.NET Framework 2.0),你可以操縱自動完成來回答你的要求,但這是一個令人頭疼的問題,而不是真正的控制。
檢查應該在JavaScript內部進行,您添加一個事件來捕獲OnItemSelected。 然後創建一個函數:
功能OnItemSelected(發件人,E)
{
- 驗證這裏
}
另一種選擇是要求用戶通過選擇從列表值操縱事件:onchange,點擊& onblur。但需要一段時間才能找到恰當的組合。
爲了振奮精神,我會告訴你,這是可能的(我們已經做到了,但由於版權問題,我無法附上我們的代碼)。
1
像這樣的東西可以幫助你
的Javascript
<script type="text/javascript">
var isItemSelected = false;
//Handler for AutoCompleter OnClientItemSelected event
function onItemSelected() {
isItemSelected = true;
}
//Handler for textbox blur event
function checkItemSelected(txtInput) {
if (!isItemSelected) {
alert("Only choose items from the list");
txtInput.focus();
}
}
</script>
ASPX
<asp:Button onblur="checkItemSelected(this)" ../>
<ajax:AutoCompleteExtender OnClientItemSelected="onItemSelected" ../>
0
使用布爾isItemSelected
會失敗,如果一個用戶最初從選擇一個項目的工作之前提交的答案該列表,然後返回並決定鍵入一個值。
爲了防止這種情況,也應該有一個重置isItemSelected爲false當輸入來關注的事件:
ASPX
<asp:TextBox onblur="checkItemSelected(this)" onfocus="resetItemSelected()"../>
JS
function resetItemSelected() {
isItemSelected = false;
}
或...
使用在select上觸發的JS事件,並將該值從文本框複製到隱藏字段。然後使用隱藏字段中的值進行處理。
ASPX
<asp:HiddenField runat="server" ID="hf1"/>
<asp:TextBox runat="server" ID="tb1"></asp:TextBox>
<ajax:AutoCompleteExtender ID="ace1" runat="server" TargetControlID="tb1" OnClientItemSelected="userSelected" .../>
JS
function userSelected(sender, e) {
var selectedItem = e.get_value();
$get("<%= hf1.ClientID%>").value = selectedItem;
return false;
}
別急......還有更多!
要增強上述內容,您可以向文本框中添加模糊事件,以驗證文本框值是否與隱藏字段中的值匹配,並在值不匹配時清除文本框。
//remove value if not selected from drop down list
$('#<%=tb1.ClientID%>').blur(function() {
if ($('#<%=hf1.ClientID%>').val() !== $(this).val()) {
$(this).val("");
//optionally add a message near the input
}
});
這會讓使用者明白輸入未被接受。
相關問題
- 1. 自動完成只允許來自數據庫的選項值
- 2. 谷歌地方自動完成:只允許自動完成建議的地址
- 3. 如何將Kendo自動完成值設置爲「」
- 4. 如何在iOS中將自動完成請求設置爲UITextField
- 5. DataGrid將ReadOnly設置爲允許滾動?
- 6. 允許null在jquery ui自動完成
- 7. 自動完成不允許空格
- 8. 如何將QTableWidget設置爲只允許按標題選擇?
- 9. 設置列,以便只允許2個值中的1個
- 10. 用Selenium C自動完成AutoCompleteExtender#
- 11. 爲Mootools設置多個表單值的自動完成程序
- 12. jQuery UI自動完成:如何允許自由文本
- 13. 如何爲DataGridView Combobox列設置自動完成
- 14. 將值設置爲jquery自動完成組合框
- 15. 如何將子值列表中的值設置爲父列表
- 16. jQuery的自動完成的文本框不應該允許比自動完成列表
- 17. 如何強制自動完成的字段只使用自動完成的值?
- 18. 允許在jQuery用戶界面自動完成功能只有一個值
- 19. ChromeDriver 2.29無法將自動下載設置爲默認允許
- 20. 如何將Telerik網格設置爲允許垂直滾動
- 21. 如何將HTML無序列表轉換爲jQuery自動完成?
- 22. 自動完成「設置」,jquery
- 23. 如何在vim中爲不同類型的自動完成設置不同的自動完成行爲?
- 24. 如何將sql_mode設置爲值列表
- 25. 你如何只允許列表中的輸入? (蟒蛇自動售貨機)
- 26. 組合框必須是自動完成,並允許從列表中
- 27. jQuery標記 - 它只允許來自自動完成源的標記
- 28. 將自動完成列表中的id值隱藏
- 29. 添加列集不允許值設置
- 30. 如何將數據庫設置爲C#中的自動完成源
對不起,有點改變這個話題,但是可以配置ComboBox從下一個字母被按下時從代碼隱藏加載匹配嗎? – 2009-10-27 10:13:05
我相信這需要一些操作。 http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ComboBox/ComboBox.aspx – Faruz 2009-10-27 10:18:58