2

我在操作复选框值时遇到问题。复选框上的“更改”事件返回一个对象,在我的例子中:

{"val1":"member","val2":"book","val3":"journal","val4":"new_member","val5":"cds"}

上述对象需要进行转换,以便搜索引擎使用它,如下所示:

{ member,book,journal,new_member,cds}

我已经用下面的代码块做到了:

var formcheckbox = this.getFormcheckbox();
formcheckbox.on('change', function(checkbox, value){

                var arr=[];

                for (var i in value) {
                    arr.push(value[i])
                };

                var wrd = new Array(arr);
                    var joinwrd = wrd.join(",");
                        var filter = '{' + joinwrd + '}';

                        //console.log(filter);

                //Ext.Msg.alert('Output', '{' + joinwrd + '}');

                });

问题是我想要“更改”事件的输出(“var 过滤器”产生:{member,book,journal,new_member,cds})以在其他地方使用它。我试图使整个事件成为一个变量(var output = “the change event”),但它不起作用。

也许这是一个愚蠢的问题,但我是新手,我需要一点帮助。

先感谢您,

汤姆

4

2 回答 2

2

只需传递filter给将使用它的函数。change如果您想要发生某些事情,无论如何您都必须从处理程序内部调用它:

formcheckbox.on('change', function(cb, value){
    //...
    var filter = "{" + arr.join(",") + "}";
    useFilter(filter);
});


function useFilter(filter){
    // use the `filter` var here
}
于 2012-05-19T07:52:12.147 回答
1

您可以创建filter一个全局变量并在需要的地方使用它。

// global variable for the search filter
var filter = null;

var formcheckbox = this.getFormcheckbox();
formcheckbox.on('change', function(checkbox, value){
    var arr = [],
    i,
    max;

    // the order of the keys isn't guaranteed to be the same in a for(... in ...) loop
    // if the order matters (as it looks like) better get them one by one by there names
    for (i = 0, max = 5; i <= max; i++) {
        arr.push(value["val" + i]);
    }

    // save the value in a global variable
    filter = "{" + arr.join(",") + "}";

    console.log(filter);
});
于 2012-05-19T07:32:22.807 回答