読者です 読者をやめる 読者になる 読者になる

backbone.jsとjQueryでオートコンプリート

backbone.jsを使用するjQueryプラグインBackbone-Widgetsで、フォームのオートコンプリートができるということなので試して見ました
https://github.com/martindrapeau/Backbone-Widgets

サンプルはこちら
http://dl.dropbox.com/u/494487/backbone-sample/autocomplete/index.html

$(function(){
    var Track = Backbone.Model.extend({});
    var library = [new Track({id:1, title: "I Saw Her Standing There"}),
	    	   new Track({id:2, title: "Misery"}),
	    	   new Track({id:3, title: "Anna (Go To Him)"}),
	    	   new Track({id:4, title: "Chains"}),
	    	   new Track({id:5, title: "Boys"}),
	    	   new Track({id:6, title: "Ask Me Why"}),
	    	   new Track({id:7, title: "Please Please Me"}),
	    	   new Track({id:8, title: "Love Me Do"}),
	    	   new Track({id:9, title: "P.S. I Love You"}),
	    	   new Track({id:10, title: "Baby It's You"}),
	    	   new Track({id:11, title: "Do You Want To Know A Secret"}),
	    	   new Track({id:12, title: "A Taste Of Honey"}),
	    	   new Track({id:13, title: "There's A Place"}),
	    	   new Track({id:14, title: "Twist And Shout"})];
    var TrackList = Backbone.Collection.extend({
	model: Track
    });

    var tracks = new TrackList(library);

    $('#new-input').autocomplete({
	collection: tracks,
	attr: 'title',
	noCase: true,
	ul_class: 'autocomplete shadow',
	ul_css: {'z-index':1234}
    });
});

autocompleteメソッドにはハッシュでオプションを渡します。
「collection」に Backbone.Collectionのインスタンスを設定し、「attr」にautocompleteするモデルの属性名を渡します。
「noCase」にtrueを渡すとautocompleteするときに大文字小文字を区別しなくなります。
候補の選択時は、デフォルトでinput要素のvalueにattrの値をセットしますが、「onselect」にコールバック関数を渡すことで
挙動を変更することができます。