2014-01-21 41 views
0

其實我有一些問題,但我會從主要的一個開始。我想在JSON的基礎上設置選擇框的值。根據JSON結果設置選擇框的選項

這裏是有問題的HTML,

<label class="lbl">Office: </label> 
    <select tab-index="6" class="required" name="office" class="off"> 
     <option value="">---------</option> 
     <option value="U">London</option> 
     <option selected="selected" value="R">Delhi</option> 
     <option value="W">Lisbon</option> 
    </select> 

JSON發送它這個樣子,我不能顯示完整的JSON,因爲它太大了,但我會告訴一個部分,Location: "U"

這裏的JS部分:

if (data.Office === "R") { 
    $('select option[value="Delhi"]').prop('selected', true); 
} 
if (data.Office === "U") { 
    console.log('here'); 
    $('.off option[value="London"]').attr('selected', 'selected'); 
} 
if (data.Office === "W") { 
    $('select option[value="Lisbon"]').prop('selected', true); 
} 

但它不工作?任何人都可以指出爲什麼?

此外,我有一個經理名單說,我也得到了在JSON。所以,我這樣做,

for (var i = 0; i < data.Managers.length; i++) { 
    find_input = $('input[name="project_manager[]"').length; 
    if (find_input != data.Managers.length) { 
     $('<input type="text" name="project_manager[]" class="" value="" />').appendTo('#managers'); 
    } 
    console.log(data.Managers[i].Manager); 
    $('input[name="project_manager[]"').each(function() { 
     $(this).val(data.Managers[i].Manager); 
    }); 
} 

文本框的不依賴於管理人員的數量,但只設置最後一個項目,從管理者的文本框的數組附加價值。爲什麼?

而且我不能夠設置的textarea值在Firefox這樣的:

$('textarea#some_id').val(data.Description); 

它可以在Chrome雖然。

+0

您是否缺少'<?括號之一的選項是僅僅是一個錯字? –

+0

另外,你似乎在混合'attr'和'prop'調用。你應該使用'prop'作爲'selected'標誌 –

+0

它在Firefox上運行良好,原因必須是別的。對於你的問題的第一部分,你的意思是不工作?你可以給JS小提琴嗎? –

回答

1

首先,你需要選擇框中的第三選項的開頭添加字符「<」:

<option selected="selected" value="R">Delhi</option>

現在,在JS代碼,你的問題是,你正在使用錯誤的價值。相反的:

$('select option[value="Lisbon"]').prop('selected', true);

您必須使用:

$('select option[value="W"]').prop('selected', true);

我希望它能幫助。

+0

我一定會嘗試這個,現在應該工作,我猜。 – user1601973

0

我覺得你的選擇應該是這樣的形式:

$('select option[value="R"]').prop('selected', true); 

注意的值是相同的HTML,而不是顯示的字符串(即「R」而不是「德里」)的值。

另外,您應該一直使用prop()來選擇標誌,如John Resig所述here

相關問題