我希望用戶能夠選擇一個選項,並能夠在點擊「重命名」按鈕時對其進行重命名。
我試圖通過在選定的option
中嵌套input type = "text"
。然而,onblur
事件在input
是不工作...
看來,select
不允許內部option
嵌套的HTML元素,但它的功能是理想的...用什麼結構可能我實現了這樣的事情,一個無序列表?
如何在HTML選擇中實現重命名選項?
下面是HTML:
<select id = "asdf" size = "2">
<option>asdf</option>
<option>qwerty</option>
</select>
<input type = "button" value = "rename" onclick = "rename();" />
...這裏是JavaScript/jQuery的:
function rename() {
if ($("#asdf").length > 0) {
var selectedText = $("#asdf").find(":selected").text();
var selectedIndex = $("#asdf").find(":selected").index();
var options = document.getElementById("asdf").options;
options[selectedIndex].innerHTML =
"<input type = 'text' id = 'field' onblur = 'setField(this.value);'" +
"value = '" + selectedText + "' />";
function setField(newName) {
options[selectedIndex].innerHTML = newName;
}
}
}
據我所知,'option'不支持這一點,它只是純文本。 – hiway
嗯,每當我使用options [selectedIndex] .innerHTML =「blah」測試它時,它會更改選項的文本。我也注意到它實際上改變了Select的innerHTML作爲一個按鈕,除非我在Chrome中沒有看到按鈕。 –