2013-03-07 63 views
-1

我有选择框(多属性),被称为“c0r1”,它包含的选项:的jQuery在选择框中选择多个数值

<select id="c0r1" multiple="multiple" class="fcv"> 
    <option value="A">A</option> 
    <option value="B">B</option> 
    <option value="C">C</option> 
</select> 

我也有目标“foo”的

"foo" : { 
     "bar": ["x", "y", "z"], 
     "teal" : [ 
      {"x" : ["A"], "y" : [...], "z" : [...]}, 
      {"x" : [...], "y" : [...], "z" : [...]}, 
      {"x" : [...], "y" : [...], "z" : [...]} 
     ] 
} 

bar存储一组值,然后将其用作深蓝色阵列中的对象中的键。

c0r1(和c0r2,c1r1,...)的内容由“x”,“y”和“z”确定。代码中的其他地方,它们代表一组值。该页面将选择框分配给一个组,并且从组中填充选项(以这种方式生成第一部分HTML)。

对于这个问题的目的,c0r1被分配(在其他地方的代码)“X”,其包含的值“A”,“B”,和“C”

没有得到更深了为什么事情就是这样,我需要获取foo.teal.x的值,并使用它们并“选择”c0r1中的相应值。

当我使用以下JS:

var blah = foo.bar[0]; //blah = x 
var value = foo.teal[0][blah][0]; //value = A 
$("#c0r1").val(value); 

没有被选中。我已经介绍了一个调试器,blah和value被正确赋值,而jQuery不会抛出任何错误......只是,没有任何东西被分配。

我也试过

$("#c0r1[value='" + value + "']").attr("selected", "selected"); 
//and 
$("#c0r1[value='" + value + "']").prop("selected", true); 

这当中,我发现在网络上其他地方的建议。

显然,一旦我有这个工作,我会建立代码,以便选择所有的值。为什么它不工作,atm?

在页面的其他地方,我已经能够使用相同的json对象和选择框的.val()方法,它的工作正常。然而,这是第一例“多重”的案例。

谢谢, 山姆。

UPDATE:

嗯,只是有一个想法:为DOM元素c0r1及其选项是动态生成的,是有可能,jQuery是不知道它们的存在?虽然我认为会抛出一个异常(这段代码没有这样做)。

更新2:

我已经工作了,这个问题已经无关什么在这个问题正在讨论中,它只是因为代码为“选择”的选项正在运行之前选项已收到。这些选项来自服务器响应,我不会在服务器响应之前调用上述代码。

看起来像我倒下了旧的“延迟为0”谬误我的教授告诫我。

随时downvote。

+0

您是否尝试过选择的整个数组传递到'VAL('只是第一个项目,而不是)?例如。 'var values = foo.teal [0] [blah]; $(“#c0r1”)。val(values);' – cspotcode 2013-03-07 04:04:16

+0

我有,仍无济于事。 – 2013-03-07 05:25:06

+1

嗯,只是在黑暗中拍摄: 我记得很久以前有一个IE6的问题,并设置复选框的值。我无法在RAM中创建复选框元素,设置选中状态,然后将其添加到文档中。在复选框添加到文档之前设置选中的状态总是会失败。 您是否试图在浏览器有机会将其呈现到文档之前修改选择列表?你也瞄准什么浏览器? – cspotcode 2013-03-07 05:29:10

回答

1

您需要foo.teal数组中的对象之间用逗号:

"foo" : { 
     "bar": ["x", "y", "z"], 
     "teal" : [ 
      {"x" : ["A"], "y" : [...], "z" : [...]}, // <-- here 
      {"x" : [...], "y" : [...], "z" : [...]}, // <-- and here 
      {"x" : [...], "y" : [...], "z" : [...]} 
     ] 
} 

工作例如:http://jsfiddle.net/gKvWj/

+0

对不起,我其实有逗号。我的问题中的代码实际上并不是我系统中的代码,对于合法性问题,我必须将所有内容都更改为更通用的代码。这些逗号在翻译中丢失了。 – 2013-03-07 03:54:15

+0

好吧,不管我的例子有效。你可以建立起来。 – AlienWebguy 2013-03-07 15:19:21

0

您的选择会与你的jQuery选择了错误的元素。它应该是option,而不是select,因为这样的:

$('#c0r1 option[value="B"]').attr('selected', true); 
+0

感谢您指出此错误,但它并未修复代码。这导致我相信这不是我如何导出“价值”(因此,该对象是有效的)的问题。 – 2013-03-07 04:03:03

+0

我想你一定在做别的事情。你有没有将你的jQuery代码封装在文档就绪块中?你可以发布这个*不*工作的jsfiddle吗?一个由AlienWebguy发布的似乎工作得很好... – 2013-03-07 04:22:05

+0

使用'prop()'方法选择'不'attr()'...'selected'是一个属性不属性 – charlietfl 2013-03-07 04:23:23