是否可以將用戶輸入限制爲僅使用JQuery autocomplete plugin的源值?僅在jQuery UI自動填充插件中僅允許使用值
例如,如果源數組包含"Bold","Normal","Default","100","200"
,則允許用戶只鍵入這些值。
是否可以將用戶輸入限制爲僅使用JQuery autocomplete plugin的源值?僅在jQuery UI自動填充插件中僅允許使用值
例如,如果源數組包含"Bold","Normal","Default","100","200"
,則允許用戶只鍵入這些值。
我看到你已經有了一個解決方案。這裏有一個類似的方法來做到這一點,因爲我已經放了一些時間。
http://jsfiddle.net/pxfunc/j3AN7/
var validOptions = ["Bold", "Normal", "Default", "100", "200"]
previousValue = "";
$('#ac').autocomplete({
autoFocus: true,
source: validOptions
}).keyup(function() {
var isValid = false;
for (i in validOptions) {
if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
}
if (!isValid) {
this.value = previousValue
} else {
previousValue = this.value;
}
});
我同意Rephael所做的評論,因爲您想限制自動填充中可能的值,更安全的選擇是選擇下拉菜單。因爲最終用戶可能會在文本框中輸入數據而無法寫入我想要的內容時感到沮喪。選擇下拉菜單的選擇「被社會接受」是有限的。
答案與問題的意見完成。 – Mauro 2011-06-16 15:16:23
我想出了一個辦法。
將以下選項添加到插件。這適用於源是數組的情況。
change: function (event, ui) {
if (!ui.item) {
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
valid = false;
$.each(YOUR_SOURCE_ARRAY_NAME, function (index, value) {
if (value.match(matcher)) {
this.selected = valid = true;
return false;
}
});
if (!valid) {
// remove invalid value, as it didn't match anything
$(this).val("");
return false;
}
}
}
我有一個簡單的選擇。檢查了這一點:
基本上在文本框的onChange事件以清除值的工作原理相同。
這裏是JS:
var validOptions = ["Bold", "Normal", "Default", "100", "200"];
$('#auto-complete-input').autocomplete({
autoFocus: true,
source: validOptions
});
function clearAutoCompleteInput() {
$("#auto-complete-input").val('');
}
和HTML:
<label for="auto-complete-input">Select one: </label>
<input id="auto-complete-input" type="text" onChange="clearAutoCompleteInput()" />
請在此處發佈您的代碼,而不僅僅是鏈接。 – 2012-08-13 15:51:26
這是一個老問題,但我什麼,我要做的就是
如果它是真的,輸入是好的,否則它是壞的。
對於「怪異」問題感到抱歉,但爲什麼不選擇一個選擇框呢? – Dementic 2011-06-16 14:28:38
我想要一個很好的外觀和感覺。我覺得這很有吸引力 – Omar 2011-06-16 14:35:41
好吧,想一個很好看的車,你必須反向開車.... 你會買它嗎?我不這麼認爲,因爲你會因倒車而感到惱火...... – Dementic 2011-06-16 14:37:19