オートコンプリートのフィールドはフォーカスが当たるか、または何かが入力されると検索を開始して指定されたリストにマッチする項目を表示します。入力を続けれことで更に対照を絞りこみます。
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - デフォルト</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<script>
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$( "#tags" ).autocomplete({
//リストを指定
source: availableTags
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="tags">プログラミング言語: </label>
<input id="tags" />
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Accent folding</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<script>
$(function() {
var names = [ "Jörn Zaefferer", "Scott González", "John Resig" ];
var accentMap = {
"á": "a",
"ö": "o"
};
var normalize = function( term ) {
var ret = "";
for ( var i = 0; i < term.length; i++ ) {
ret += accentMap[ term.charAt(i) ] || term.charAt(i);
}
return ret;
};
$( "#developer" ).autocomplete({
source: function( request, response ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
response( $.grep( names, function( value ) {
value = value.label || value.value || value;
return matcher.test( value ) || matcher.test( normalize( value ) );
}) );
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<form>
<label for="developer">jQuery開発者名: </label>
<input id="developer" />("a"を"á"、"o"を"ö"とみなします)
</form>
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Categories</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-autocomplete-category {
font-weight: bold;
padding: .2em .4em;
margin: .8em 0 .2em;
line-height: 1.5;
}
</style>
<script>
$.widget( "custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function( ul, items ) {
var that = this,
currentCategory = "";
$.each( items, function( index, item ) {
if ( item.category != currentCategory ) {
ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
currentCategory = item.category;
}
that._renderItemData( ul, item );
});
}
});
</script>
<script>
$(function() {
var data = [
{ label: "anders", category: "" },
{ label: "andreas", category: "" },
{ label: "antal", category: "" },
{ label: "annhhx10", category: "Products" },
{ label: "annk K12", category: "Products" },
{ label: "annttop C13", category: "Products" },
{ label: "anders andersson", category: "People" },
{ label: "andreas andersson", category: "People" },
{ label: "andreas johnson", category: "People" }
];
$( "#search" ).catcomplete({
delay: 0,
source: data
});
});
</script>
</head>
<body>
<label for="search">検索: </label>
<input id="search" />
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Combobox</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-combobox {
position: relative;
display: inline-block;
}
.ui-combobox-toggle {
position: absolute;
top: 0;
bottom: 0;
margin-left: -1px;
padding: 0;
/* adjust styles for IE 6/7 */
*height: 1.7em;
*top: 0.1em;
}
.ui-combobox-input {
margin: 0;
padding: 0.3em;
}
</style>
<script>
(function( $ ) {
$.widget( "ui.combobox", {
_create: function() {
var input,
that = this,
select = this.element.hide(),
selected = select.children( ":selected" ),
value = selected.val() ? selected.text() : "",
wrapper = this.wrapper = $( "<span>" )
.addClass( "ui-combobox" )
.insertAfter( select );
function removeIfInvalid(element) {
var value = $( element ).val(),
matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( value ) + "$", "i" ),
valid = false;
select.children( "option" ).each(function() {
if ( $( this ).text().match( matcher ) ) {
this.selected = valid = true;
return false;
}
});
if ( !valid ) {
// remove invalid value, as it didn't match anything
$( element )
.val( "" )
.attr( "title", value + " didn't match any item" )
.tooltip( "open" );
select.val( "" );
setTimeout(function() {
input.tooltip( "close" ).attr( "title", "" );
}, 2500 );
input.data( "autocomplete" ).term = "";
return false;
}
}
input = $( "<input>" )
.appendTo( wrapper )
.val( value )
.attr( "title", "" )
.addClass( "ui-state-default ui-combobox-input" )
.autocomplete({
delay: 0,
minLength: 0,
source: function( request, response ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
response( select.children( "option" ).map(function() {
var text = $( this ).text();
if ( this.value && ( !request.term || matcher.test(text) ) )
return {
label: text.replace(
new RegExp(
"(?![^&;]+;)(?!<[^<>]*)(" +
$.ui.autocomplete.escapeRegex(request.term) +
")(?![^<>]*>)(?![^&;]+;)", "gi"
), "<strong>$1</strong>" ),
value: text,
option: this
};
}) );
},
select: function( event, ui ) {
ui.item.option.selected = true;
that._trigger( "selected", event, {
item: ui.item.option
});
},
change: function( event, ui ) {
if ( !ui.item )
return removeIfInvalid( this );
}
})
.addClass( "ui-widget ui-widget-content ui-corner-left" );
input.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
};
$( "<a>" )
.attr( "tabIndex", -1 )
.attr( "title", "全ての項目を表示" )
.tooltip()
.appendTo( wrapper )
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},
text: false
})
.removeClass( "ui-corner-all" )
.addClass( "ui-corner-right ui-combobox-toggle" )
.click(function() {
// close if already visible
if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
input.autocomplete( "close" );
removeIfInvalid( input );
return;
}
// work around a bug (likely same cause as #5265)
$( this ).blur();
// pass empty string as value to search for, displaying all results
input.autocomplete( "search", "" );
input.focus();
});
input
.tooltip({
position: {
of: this.button
},
tooltipClass: "ui-state-highlight"
});
},
destroy: function() {
this.wrapper.remove();
this.element.show();
$.Widget.prototype.destroy.call( this );
}
});
})( jQuery );
$(function() {
$( "#combobox" ).combobox();
$( "#toggle" ).click(function() {
$( "#combobox" ).toggle();
}).button();
});
</script>
</head>
<body>
<div class="ui-widget">
<label>プログラミング言語: </label>
<select id="combobox">
<option value="">--選択してください--</option>
<option value="ActionScript">ActionScript</option>
<option value="AppleScript">AppleScript</option>
<option value="Asp">Asp</option>
<option value="BASIC">BASIC</option>
<option value="C">C</option>
<option value="C++">C++</option>
<option value="Clojure">Clojure</option>
<option value="COBOL">COBOL</option>
<option value="ColdFusion">ColdFusion</option>
<option value="Erlang">Erlang</option>
<option value="Fortran">Fortran</option>
<option value="Groovy">Groovy</option>
<option value="Haskell">Haskell</option>
<option value="Java">Java</option>
<option value="JavaScript">JavaScript</option>
<option value="Lisp">Lisp</option>
<option value="Perl">Perl</option>
<option value="PHP">PHP</option>
<option value="Python">Python</option>
<option value="Ruby">Ruby</option>
<option value="Scala">Scala</option>
<option value="Scheme">Scheme</option>
</select>
</div>
<div class="ui-widget" style="margin:20px 0">
<button id="toggle">選択肢を表示・非表示</button>
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Custom data and display</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
#project-label {
display: block;
font-weight: bold;
margin-bottom: 1em;
}
#project-icon {
float: left;
height: 32px;
width: 32px;
}
#project-description {
margin: 0;
padding: 0;
}
</style>
<script>
$(function() {
var projects = [
{
value: "jquery",
label: "jQuery",
desc: "the write less, do more, JavaScript library",
icon: "jquery_32x32.png"
},
{
value: "jquery-ui",
label: "jQuery UI",
desc: "jQuery公式UIライブラリ",
icon: "jqueryui_32x32.png"
},
{
value: "sizzlejs",
label: "Sizzle JS",
desc: "ピュアJavaScript CSSセレクタエンジン",
icon: "sizzlejs_32x32.png"
}
];
$( "#project" ).autocomplete({
minLength: 0,
source: projects,
focus: function( event, ui ) {
$( "#project" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( "#project" ).val( ui.item.label );
$( "#project-id" ).val( ui.item.value );
$( "#project-description" ).html( ui.item.desc );
$( "#project-icon" ).attr( "src", "images/" + ui.item.icon );
return false;
}
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
.appendTo( ul );
};
});
</script>
</head>
<body>
<div id="project-label">プロジェクトを選択 (1文字目に"j"をタイプしてください):</div>
<img id="project-icon" src="images/transparent_1x1.png" class="ui-state-default" alt="" />
<input id="project" />
<input type="hidden" id="project-id" />
<p id="project-description"></p>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Multiple values</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<script>
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
function split( val ) {
return val.split( /,\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
$( "#tags" )
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function( request, response ) {
// delegate back to autocomplete, but extract the last term
response( $.ui.autocomplete.filter(
availableTags, extractLast( request.term ) ) );
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
var terms = split( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( ", " );
return false;
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="tags">プログラミング言語(カンマ区切りで複数入力可能): </label>
<input id="tags" size="50" />
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Multiple, remote</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-autocomplete-loading {
background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
}
</style>
<script>
$(function() {
function split( val ) {
return val.split( /,\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
$( "#birds" )
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
source: function( request, response ) {
$.getJSON( "/demo/jqueryui/birds_search", {
term: extractLast( request.term )
}, response );
},
search: function() {
// custom minLength
var term = extractLast( this.value );
if ( term.length < 2 ) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
var terms = split( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( ", " );
return false;
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="birds">鳥(例:"swallow"): </label>
<input id="birds" size="50" />
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Remote JSONP datasource</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-autocomplete-loading {
background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
}
#city { width: 20em; }
</style>
<script>
$(function() {
function log( message ) {
$( "<div>" ).text( message ).prependTo( "#log" );
$( "#log" ).scrollTop( 0 );
}
$( "#city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://ws.geonames.org/searchJSON",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
response( $.map( data.geonames, function( item ) {
return {
label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
value: item.name
}
}));
}
});
},
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="city">世界の都市(例:"Los"): </label>
<input id="city" />
Powered by <a href="http://geonames.org">geonames.org</a>
</div>
<div class="ui-widget" style="margin-top: 2em; font-family: Arial;">
結果:
<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Remote datasource</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-autocomplete-loading {
background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
}
</style>
<script>
$(function() {
function log( message ) {
$( "<div>" ).text( message ).prependTo( "#log" );
$( "#log" ).scrollTop( 0 );
}
$( "#birds" ).autocomplete({
source: "/demo/jqueryui/birds_search",
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="birds">鳥(例:"swallow"): </label>
<input id="birds" />
</div>
<div class="ui-widget" style="margin-top: 2em; font-family: Arial;">
結果:
<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Remote with caching</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-autocomplete-loading {
background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
}
</style>
<script>
$(function() {
var cache = {};
$( "#birds" ).autocomplete({
minLength: 2,
source: function( request, response ) {
var term = request.term;
if ( term in cache ) {
response( cache[ term ] );
return;
}
$.getJSON( "/demo/jqueryui/birds_search", request, function( data, status, xhr ) {
cache[ term ] = data;
response( data );
});
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="birds">鳥(例:"swallow"): </label>
<input id="birds" />
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Scrollable results</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-autocomplete {
max-height: 100px;
overflow-y: auto;
/* prevent horizontal scrollbar */
overflow-x: hidden;
}
/* IE 6 doesn't support max-height
* we use height instead, but this forces the menu to always be this tall
*/
* html .ui-autocomplete {
height: 100px;
}
</style>
<script>
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="tags">プログラミング言語: </label>
<input id="tags" />
</div>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - XML data parsed once</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/demos/style.css" />
<style>
.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
</style>
<script>
$(function() {
function log( message ) {
$( "<div/>" ).text( message ).prependTo( "#log" );
$( "#log" ).attr( "scrollTop", 0 );
}
$.ajax({
url: "london.xml",
dataType: "xml",
success: function( xmlResponse ) {
var data = $( "geoname", xmlResponse ).map(function() {
return {
value: $( "name", this ).text() + ", " +
( $.trim( $( "countryName", this ).text() ) || "(unknown country)" ),
id: $( "geonameId", this ).text()
};
}).get();
$( "#birds" ).autocomplete({
source: data,
minLength: 0,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + ", geonameId: " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="birds">London matches: </label>
<input id="birds" />
</div>
<div class="ui-widget" style="margin-top: 2em; font-family: Arial;">
結果:
<div id="log" style="height: 200px; width: 400px; overflow: auto;" class="ui-widget-content"></div>
</div>
</body>
</html>
オートコンプリートは、記事へのタグ付け、アドレス帳からのメールアドレス入力、都市名、郵便番号の入力の際に使用されると便利です。
リストへ表示する項目は、ローカルまたはリモートから、そのデータを取得することが可能です。
ローカルからの取得は小規模なデータセット、例えば50件程のアドレス帳で使用するのに適しており、また
数百、数百万のデータベースなどの大規模なデータを取扱う場合は、リモートからの取得が必要になります。
データ取得の詳細を調べるには、オプションのsourceを参照してください。
<label>プログラム言語を選択してください。</label>
<input id="autocomplete" />
<script>
$( "#autocomplete" ).autocomplete({
source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]
});
</script>
キーボード操作のサポートについて
リストメニューが表示されている場合、下記のキーコマンドが利用可能なります。
- [↑]
-
1つ上の項目に移動します。
1つ目の項目であればテキストフィールドに移動し、テキストフィールドであれば最後の項目に移動します。
- [↓]
-
1つ下の項目に移動します。
最後の項目であればテキストフィールドに移動し、テキストフィールドであれば最初の項目に移動します。
- ESCAPE
-
リストメニューを閉じます。
- ENTER
-
現在フォーカスのある項目を選択し、リストメニューを閉じます。
- TAB
-
現在フォーカスのある項目を選択して、リストメニューを閉じ、次の要素にフォーカスを移動します。
リストメニューが閉じている場合、次のキーが利用できます。
- [↑][↓]
-
オプションのminLengthの条件を満たしていれば、リストメニューを開きます。
依存関係
オプション |
説明 |
appendTo |
型:Selector
初期値:"body"
リストメニューの要素をどの要素内に挿入するのか決定します。
スクロールした際にポップアップメニュー位置が固定されてしまうため、オートコンプリートがposition:fixedの要素内にある場合はこれを上書きします。
$( ".selector" ).autocomplete({ appendTo: "#someElem" });
// getter
var appendTo = $( ".selector" ).autocomplete( "option", "appendTo" );
// setter
$( ".selector" ).autocomplete( "option", "appendTo", "#someElem" );
|
autoFocus |
型:Boolean
初期値:false
trueを設定すると、メニューが開いた際に最初の項目を選択します。
|
collapsible |
型:Boolean
初期値:false
すべてのパネルを折りたためる事が出来るか否かを指定します。
アクティブなパネルを折りたたむ事が出来るようになります。
|
delay |
型:Integer
初期値:300
キーストロークされてから、リストメニューの検索が実行されまでの遅延時間をミリ秒単位で指定します。
リモートデータを取り扱う場合は、サーバへの負荷を考慮する必要があります。
|
event |
型:String
初期値:"click"
アコーディオンの見出しが反応してパネルを展開する際のイベントを指定します。
イベント名を半角スペース区切りで複数指定することが可能です。
//見出しのマウスオーバーでコンテンツ部分が展開するようになります。
$( ".selector" ).accordion({ event: "mouseover" });
|
disabled |
型:Boolean
初期値:false
trueを設定すると、オートコンプリートを無効化します。
|
minLength |
型:Integer
初期値:1
リストメニューの検索が実行されるのに必要なユーザーが入力する最低限の文字列数を指定します。
0指定は、ローカルデータで項目数がそれほど多くないのであれば有用ですが、リモートデータで
データ数も多いケースでは、状況に合わせて高い数値を指定する必要があります。
|
position |
型:Object
初期値:{ my: "left top", at: "left bottom", collision: "none" }
input要素に対するリストメニューの位置を指定します。
ofオプションはデフォルトではinput要素を指定しますが別の要素に変更することも可能です。
また、このオプションの使い方について、jQuery UI Positionを参照して、
更に詳しい指定の方法を確認してみてください。
$( ".selector" ).autocomplete({ position: { my : "right top", at: "right bottom" } });
|
source |
型:Array or String or Function(Object request, Function response(Object data))
初期値:無し(入力必須)
使用するデータを定義します。この項目は必ず入力してください。
指定した型とは無関係に、リストメニューのラベルは全てテキストとして扱われます。
もしHTMLを扱いたい場合は、
jquery.ui.autocomplete.html.js
で拡張することによって使用可能になります。
|
メソッド | 説明 |
close() |
オートコンプリートメニューを閉じます。
searchメソッドと組み合わせてメニューを閉じる際に使用すると便利です。
$( ".selector" ).autocomplete( "close" );
|
destroy() |
オートコンプリートの機能を完全に削除します。
|
disable() |
オートコンプリートを無効化します。
|
enable() |
オートコンプリートを有効にします。
|
option( optionName ) |
戻り値:Object
optionNameに指定したオプションの現在の値を取得します。
- optionName
-
型:
String
取得したいオプションの名前を指定します。
|
option() |
戻り値:PlainObject
オプションの各キーと値がペアとなったオブジェクトを返します。
|
option( optionName, value ) |
引数のoptionNameのオプションに値を設定します。
- optionName
-
型:
String
設定したいオプションの名前を指定します。
- value
-
型:
Object
設定したい値を指定します。
|
option( options ) |
オプションに設定したい各キーと値がペアとなったオブジェクトを指定します。
- option
-
型:
Object
設定したいオプションのキーと名前のペアを指定します。
|
search( [value] ) |
ダイアログがドラッグされている間、トリガされます。
- [value]
-
型:
String
Searchイベントをトリガして、イベントがキャンセルされなければデータを絞り込みます。
これはセレクトボックス風のボタンをクリックして候補リストを表示したい場合に便利です。
[value]に何も指定されなかった場合は、入力されている値が使用されます。
もし、空文字列を指定し且つminLength:0であれば、全ての項目を表示します。
|
widget() |
メニュー要素を含むjQueryオブジェクトを返します。
メニュー要素は常に作成、破棄が行われますが、要素自体は初期化時に生成され、再利用されています。
|
イベント |
説明 |
change( event, ui ) |
型:autocompletechange
入力値が変更された時にトリガされます。
- ui.item
-
型:
jQuery
もし、メニューが選択されていればその項目を取得します。
そうでなければnullになります。
$( ".selector" ).autocomplete({
change: function( event, ui ){
//実行したい処理
}
});
$( ".selector" ).on( "autocompletechange", function(event, ui){
//実行したい処理
});
|
create( event, ui ) |
型:autocompletecreate
オートコンプリートが生成された際にトリガされます。
|
focus( event, ui ) |
型:autocompletefocus
フォーカスがメニューに移った(選択はされていない)際にトリガされます。
デフォルトのアクションは、イベントがキーボード操作によってトリガされたものの場合にのみ、
フォーカスされた項目の値を使用して、テキストフィールドの値を交換します。
- ui.item
-
フォーカスされたメニューの項目
|
open( event, ui ) |
型:autocompleteopen
候補となるメニューリストが開かれた、または更新された際にトリガされます。
|
response( event, ui )
1.9追加
|
型:autocompleteresponse
候補となるメニューの項目が検索完了後で且つメニューを開く直前にトリガされます。
オプションsourceのコールバ���クが必要とされないローカルデータを操作したい場合に便利です。
このイベントは、検索結果が0件であったりオートコンプリートが無効化されていてメニューが表示されない場合でも、
検索完了後に常にトリガされます。
- ui.content
-
型:
Array
検索されたデータを受けとって、表示前に編集することが可能です。
このデータは常に正規化されており、編集する際にはラベルと値のプロパティになっている事を確認してください。
|
search( event, ui ) |
型:autocompletesearch
minLengthとdelayの条件を満たし、検索を実行する直前にトリガされます。
もしキャンセルされた場合、検索のためのリクエストは送信されず、候補リストも取得されません。
|
select( event, ui ) |
型:autocompleteselect
メニューから項目を選択した際にトリガされます。
デフォルトの動作は、選択した項目を入力項目と置き換えます。
キャンセルをすると、入力項目との置き換えを行いませんが、メニューを閉じることをキャンセルすることは出来ません。
- ui.item
-
型:
jQuery
選択した項目。
|
Back to top