2013-03-07 64 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