osh*_*nen 3 javascript jquery jquery-ui jquery-autocomplete
如何确保输入字段中的值始终只有来自源的值?
例如,如果在源头我有
source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
Run Code Online (Sandbox Code Playgroud)
这是数据库驱动的实际脚本是:
source: "get_json.aspx";
Run Code Online (Sandbox Code Playgroud)
在输入字段中我输入" 冷 ",如何阻止这种情况发生?
当输入字段中的焦点丢失时,如何确保源中存在值?
你应该绑定到适当的事件.我认为你应该绑定到关闭事件.然后检查输入的值包含数组中的元素.否则你应该使用val再次输入空.我在当地自己测试了它,它可以解决问题.
$( "#tags" ).autocomplete({
source: availableTags,
close: function(event, ui) {
var inputValue = $( "#tags" ).val();
var idx = jQuery.inArray(inputValue, availableTags);
if (idx == -1) {
$( "#tags" ).val("");
}
}
});
Run Code Online (Sandbox Code Playgroud)
PS:我做了一些测试,我认为你应该把它绑定到另一个事件上.因为当您选择导航栏时它不起作用.我认为你应该绑定到模糊事件.
改进的代码=>
$( "#tags" ).autocomplete({
source: availableTags
});
$( "#tags").blur(function() {
var inputValue = $( "#tags" ).val();
var idx = jQuery.inArray(inputValue, availableTags);
if (idx == -1) {
$( "#tags" ).val("");
}
});
Run Code Online (Sandbox Code Playgroud)
json to array =>
json.txt:
[{"id":1,"value":"ActionScript"},{"id":2,"value":"AppleScript"},{"id":3,"value":"Asp"},{"id":4,"value":"BASIC"},{"id":5,"value":"C"},{"id":6,"value":"C++"},{"id":7,"value":"Clojure"},{"id":8,"value":"COBOL"},{"id":9,"value":"ColdFusion"},{"id":10,"value":"Erlang"},{"id":11,"value":"Fortran"},{"id":12,"value":"Groovy"},{"id":13,"value":"Haskell"},{"id":14,"value":"Java"},{"id":15,"value":"JavaScript"},{"id":16,"value":"Lisp"},{"id":17,"value":"Perl"},{"id":18,"value":"PHP"},{"id":19,"value":"Python"},{"id":20,"value":"Ruby"},{"id":21,"value":"Scala"},{"id":21,"value":"Scheme"}]
Run Code Online (Sandbox Code Playgroud)
$(function() {
var LIMIT = 10;
$.getJSON("json.json", function(data) {
var autocomplete = $( "#tags" ).autocomplete({
source: function( request, response ) {
var i=0;
var result = [];
$.each(data, function(index, value) {
// value.value.search(/request.term/i);
var idx = value.value.toLowerCase().indexOf( request.term.toLowerCase() );
if (idx >= 0) {
result.push(value.value);
i++;
}
if (i === LIMIT) {
return false;
}
});
response(result);
}
});
$( "#tags").blur(function() {
var inputValue = $( "#tags" ).val();
var clear = true;
$.each(data, function(index, value) {
if (value.value == inputValue) {
clear = false;
return false;
}
});
if (clear) {
$( "#tags" ).val("");
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8788 次 |
| 最近记录: |