2014-09-12 23 views
0

我在html上有两个选择框。根据选择的项目,我需要选择的项目转换为列出 这样的:如何将选定列表转换为JavaScript中的自定义列表?

c("item1", "item2", "item3") 

jsfiddle example

$("#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); 
}) 

提交按钮建立了选择框和选择信息需要返回选定的项目。例如,在的jsfiddle例如,如果我选择CPU和日期,我PARAM名单应该是这样的:

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") 

更新update jsfiddle example

+0

而不是'JSON.parse()来',你为什么不只是使用对象文本? – royhowie 2014-09-12 16:32:55

+0

@royhowie,我正在这样做,这部分正在为我工​​作。我只需要输出到c(“CPU”,“Date”)格式。我更新了帖子。但我真的不想看到围绕[]的字符串,任何想法? – user1471980 2014-09-12 16:34:31

+1

'c(“item1”,“item2”,“item3”)'不是一个列表,它是一个函数调用。我不知道你在试图摆脱这一点。 – lincolnk 2014-09-12 16:50:29

回答

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); 
}) 

updated jsfiddle

+0

这是好的,我会接受答案。一个小问题。当我传递给另一个函数时,我发现它传递的形式如下:“c(\”Date \“,\”CPU \“)”),是否有一个JavaScript函数,我将解析出\?只需将值传递为c(“Date”,“CPU”)? – user1471980 2014-09-12 17:18:21

+0

这一切都最终取决于您打算如何使用此字符串值,但反斜杠仅表示该字符串包含双引号,并且使用反斜杠进行转义。 – intheweeds 2014-09-12 17:41:42

0

,而不是试图构建的参数列表为什么不使用apply()

例如

$("#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/

相关问题