select2将所选值设置为隐藏字段

时间:2013-05-07 11:15:43

标签: jquery jquery-select2

我有一个如下所示的select2函数,

    function select2AutocompleteManyToManyField(field, request_url){
        var map = {};
        $("#"+field).select2({
            multiple: true,
            placeholder: field,
            minimumInputLength: 3,
            ajax: { // instead of writing the function to execute the request we use Select2's convenient helper

                url: request_url,
                dataType: 'json',
                data: function (term) {
                    return {
                        query: term
                    };
                },
            results: function (data) { // parse the results into the format expected by Select2.
                var objects = [];
                $.each(data,function(i,obj){
                    map[obj.translations__name] = obj;
                    objects.push({
                        "text": obj.translations__name,
                        'id': map[obj.translations__name].id

                    });
                });
                return {results: objects};
              }
            }
        });
}

我想用选定的字段id更新另一个隐藏字段的值。 有没有办法做到这一点 ?

2 个答案:

答案 0 :(得分:3)

我经历过这个并且找不到解决方案。然后我按照下面的方式工作了 在sunbmit上单击填充隐藏字段

 $("#mysubmit").click(function () {
            $('#Hiddenfields').val($('#divforselect').val());
     });

答案 1 :(得分:2)

这是我在这里看到并成功应用的方式:

            /* bind select2 */
            var select2 = $( '#city' ).select2({
                initSelection : function( element, callback ) {
                    var data = { id: element.val(), text: element.val() };
                    callback(data);
                },
                minimumInputLength: 2,
                ajax: {
                    url: "/city",
                    dataType: 'jsonp',
                    data: function( term, page ){
                            return {
                                q: term,
                                page_limit: 10
                        };
                    },
                    results: function( data, page ){
                        return { results: data.content.result };
                    }
                },
            }).data( 'select2' );
            select2.onSelect = ( function( fn ){
                return function( data, options ){
                    $( '#city_id' ).val( data.id );
                    return fn.apply( this, arguments )
                };
            })( select2.onSelect );