2015-05-14 93 views
2

我正在使用angular來管理從數組中選擇的下拉菜單。如何在ng選項上設置關閉的下拉值

  • 數組本身的條目都是小寫的。
  • 要在代碼中其他地方使用的「選定」變量要小寫。
  • 在下拉列表中顯示的條目要大寫
  • 當下拉是關閉它要顯示當前選擇的條目(大寫)以字符串「查看:」前綴

我在瞭解如何實現前3(通過使用myValue.toUpperCase() for myValue in myArrayOfValues),但我甚至不知道遠程如何去實現第4點 - 無論是在角(理想),或在原JS/jQuery的

任何人都知道如何做到這一點?

回答

0

我想你想的組合:

HTML:

<select name=dropdown size=1> 
    <option value="option1">option 1</option> 
    <option value="option2" selected>VIEWING: option 2</option> 
</select> 

Javascr IPT:

var dropdown = $('select[name="dropdown"]'); 

dropdown.focusin(function() { 
    var selected = dropdown.find(":selected"); 
    selected.html(selected.val()); 
}); 

dropdown.change(function() { 
    updateSelected(); 
    $(this).blur(); 
}); 

dropdown.focusout(function() { 
    updateSelected(); 
}); 

function updateSelected() { 
    var selected = dropdown.find(":selected"); 
    var html = "VIEWING: " + selected.val(); 
    selected.html(html); 
} 

https://jsfiddle.net/r89oy2zk/

+0

嗯......我同意,這是比什麼要求比任何其他更接近。但是當我打開下拉菜單時,我確實不希望靜態框中的值發生變化。我得到的印象是不可能的,雖然:( – Brondahl

0

以下代碼示例應該可以幫助您設置所選選項的文本。

HTML

<select id="yourSelectElementId"> 
    <option id="placeholder" style="display:none"></option> 
    <option>item1</option> 
    <option>item2</option> 
    <option>item3</option> 
</select> 

的Javascript

$("#yourSelectElementId").change(function() { 
    $this = $(this); 
    var text = $this.find("option:selected").text(); 
    var value = $this.val(); 
    var placeholder = $this.find("option#placeholder"); 
    placeholder.text("VIEWING:" + text.toUpperCase()) 
     .attr("selected", true) 
     .val(value); 
}); 
$("#yourSelectElementId").click(function() { 
    $this = $(this); 
    $this.find("option#placeholder").hide(); 
}); 

http://jsfiddle.net/dL8sbqsv/4/

希望幫助!

+0

可惜沒有......這種情況正在改變所選條目本身,而不是它的封閉形式顯示。正如你可以在你的小提琴中看到的,你最終在下拉菜單中打開的條目也有VIEWING。 – Brondahl

+0

好的沒問題。看看最新的jsfiddle和更新代碼:http://jsfiddle.net/dL8sbqsv/4/。不知道它會如何很好地發揮角度,但這是現在的工作 –