如何将动态源传递到jQuery UI组合框?

时间:2011-11-25 22:17:40

标签: jquery ruby-on-rails jquery-ui combobox

我成功使用了jQuery自动完成组合框示例。但是,在该示例中,下拉列表的源是使用硬编码值创建的。

当然我想在我的应用程序中使用多个组合框。不幸的是,我没有办法实现这一目标。

“combobox.js”中的操作代码段是:

lastXhr = $.getJSON( "the_hardcoded_json_request_string", request, function( data, status, xhr ) {
...
}

我尝试在上面添加一些使用“hasClass”检查类是否存在的行。遗憾的是,我甚至无法告诉对象是在调用此代码。它有一个未定义的id,我对hasClass的调用是false。什么在地狱?

我在主javascript代码中对combobox的调用如下所示:

$("#myselect").combobox();

我确信如果我愿意,()用于传递一些参数,但是combobox.js中的声明如下所示:

var cache = {}, lastXhr;
$.widget( "ui.combobox", {
    _create: function() {
...

咦?我显然没有Javascript高手,但我对$ .widget一无所知,或者对“combobox()”的调用如何神奇地知道从combobox.js调用代码。如果可以,请帮忙!

1 个答案:

答案 0 :(得分:1)

我会尝试以下几点。

(function( $ ) {
    $.widget( "ui.combobox", {
        _create: function(options) {

            // Some code

            var input = this.input = $( "<input>" )
            .insertAfter( select )
            .val( value )
            .autocomplete({
                delay: 0,
                minLength: 0,
                source: options.source,

                // More options...

            })

            // More code...

        });
    })( jQuery );

$("#myselect").combobox({source: 'http://yoursite.com/your/sourceurl'});

观察_create函数中添加的options参数和包装器自动完成小部件的source属性的'option.source'值。