セレクトボックスの絞り込み

サンプルコード

<script type="text/javascript">
    $(document).ready(function(){
        // セレクトボックスの初期値を取得
        var dataList = {};
        selectObject = $('#slct_id').children();
        for(i = 0; i < selectObject.length; i++) {
            targetObject = selectObject.eq(i);
            dataList[targetObject.val()] = targetObject.text();
        }

        // テキストエリアが変更された時の動きを登録
        $('#searchWord').bind("change keyup", function(){
            searchString = $(this).val();

            // 初期化
            $('#slct_id > option').remove();
            
            for(var key in dataList){
                text = dataList[key];
                if(searchString == '') {
                    // 全部表示
                    $('#slct_id').append($('<option>').html(text).val(key));
                }
                else{
                    // 部分一致するものを表示
                    if(text.indexOf(searchString) != -1) {
                        $('#slct_id').append($('<option>').html(text).val(key));
                    }
                }
            }
        });
    });
</script>

<form method="post" enctype="multipart/form-data">
    <input name="searchWord" type="text" id="searchWord">
    <select name="slct_id" id="slct_id">
        <option value='null'>-- none --</option>
        {html_options options=$items|truncate:20 selected=$items.id}
    </select>
</form>