我在html上有两个选择框。根据选定的项目,我需要将所选项目转换为列表 像这样:
c("item1", "item2", "item3")
$("#submitbutton").on("click", function(){
var jsonData=JSON.parse( "[{\"id\":1,\"desc\":\"Date\"},{\"id\":2,\"desc\":\"CPU\"}]"
);
var $select = $('#yaxis');
$(jsonData).each(function (index, o) {
var $option = $("<option/>").attr("value", o.desc).text(o.desc);
$select.append($option);
});
var $select1 = $('#xaxis');
$(jsonData).each(function (index, o) {
var $option1 = $("<option/>").attr("value", o.desc).text(o.desc);
$select1.append($option1);
});
})
$("#selectitems").on("click", function(){
var names=$("#xaxis").val();
var names1=$("#yaxis").val();
var param=names+","+names1;
console.log(param);
})
submitbutton构建选定的框,selectitem需要返回所选项目。例如,在jsfiddle示例中,如果我选择CPU和Date,我的参数列表应该是这样的:
console.log(param)
c("CPU","Date")
我试过这样的事情:
$("#selectitems").on("click", function(){
var names=$("#xaxis").val();
var names1=$("#yaxis").val();
var param=names+","+names1;
param="c("+param+")";
param=param.split(",");
console.log(param);
})
console.log(param),显示如下:
["c(DateTime", "CPU)"]
我需要param输出如下:
c("DateTime", "CPU")
答案 0 :(得分:1)
我认为你希望你的点击处理程序更像是这样:
$("#selectitems").on("click", function(){
var values = [];
$("#xaxis option:selected, #yaxis option:selected").each(function() {
values.push('"' + $(this).text() + '"');
});
param="c(" + values.join(",") + ")";
console.log(param);
})
答案 1 :(得分:0)
而不是尝试构建一个参数列表,为什么不使用apply()?
e.g。
$("#selectitems").on("click", function(){
var selected = $("#xaxis option:selected, #yaxis option:selected").map(function() {
return $(this).text();
});
c.apply(null,selected);
});
这是一个证明这一点的小提琴:http://jsfiddle.net/84zugx8p/11/