-5
A
回答
2
您需要識別表單和輸入元素(通過名稱或ID)。您需要創建新的select
元素,根據需要爲其創建並添加儘可能多的option
元素,最後將其插入現有文本輸入元素的位置。
你可以,例如,使用這樣的事情:
// ** change 'form' and 'text' to correctly identify the form and text input element **
var inputElement = document.forms['form'].elements['text'];
var selectElement = document.createElement('select');
// get the existing input element's current (or initial) value
var currentValue = inputElement.value || inputElement.getAttribute('value');
// add a list of options to the new select element
// ** change value/text and add/remove options as needed **
var options = [{value: 'option1', text: 'Option 1'},
{value: 'option2', text: 'Option 2'},
{value: 'option3', text: 'Option 3'}];
options.forEach(function (option, i) {
var optionElement = document.createElement('option');
optionElement.appendChild(document.createTextNode(option.text));
optionElement.setAttribute('value', option.value);
selectElement.appendChild(optionElement);
// if the option matches the existing input's value, select it
if (option.value == currentValue) {
selectElement.selectedIndex = i;
}
});
// copy the existing input element's attributes to the new select element
for (var i = 0; i < inputElement.attributes.length; ++ i) {
var attribute = inputElement.attributes[i];
// type and value don't apply, so skip them
// ** you might also want to skip style, or others -- modify as needed **
if (attribute.name != 'type' && attribute.name != 'value') {
selectElement.setAttribute(attribute.name, attribute.value);
}
}
// finally, replace the old input element with the new select element
inputElement.parentElement.replaceChild(selectElement, inputElement);
如果它是連接到它已經沒有太多的腳本一個普通的表單元素,這是相當簡單的。但是,請注意,如果有任何腳本事件附加到文本元素(焦點,更改,模糊等),那些將不再有效。如果您希望select元素具有相似的腳本事件,則需要重新編寫這些事件以應用於它。
新的select
元素可能也會是不同於原始的input
元素的大小/樣式;如果您不喜歡默認外觀,則可以添加更多代碼來更改新元素的樣式。
相關問題
- 1. javascript更改選擇選項文本
- 2. jquery輸入文本更改顯示/隱藏選擇選項
- 3. 選擇選項輸入部分文本
- 4. 當選擇選項時,Javascript更改輸入值
- 5. 更改選擇輸入選擇國家?
- 6. JavaScript - 如何更改基於選擇選項中的性別選擇的輸入文本值
- 7. jQuery切換 - 從選擇輸入更改爲文本輸入
- 8. 從選擇的選項更新文本輸入
- 9. Javascript/jQuery轉到下一個輸入/選擇更改選擇值
- 10. 使用javascript更改選擇選項
- 11. 更改選項卡選擇選項卡時的文本顏色
- 12. 更改選擇選項顯示的文本,但返回更改選擇
- 13. 更改下拉菜單中選擇文本,而不更改選項文本
- 14. 更改選擇選項選擇
- 15. 選擇時更改選項
- 16. 更改var選擇選項
- 17. 分配選項以通過javascript選擇輸入
- 18. jQuery獲得選擇選項ID並更改隱藏輸入值
- 19. 動態更改vuejs中的選擇輸入選項2
- 20. 當我選擇選項時更改佔位符的輸入
- 21. 根據選擇選項標籤更改輸入值
- 22. 允許用戶在選擇輸入中更改輸入選擇輸入
- 23. 使用AJAX根據以前的選擇更改表單輸入選項
- 24. 如何阻止文本選擇不輸入文本區域和選擇項目
- 25. 克隆和選擇框onchange輸入文本的更改值
- 26. 選擇時如何更改文本輸入的CSS?
- 27. 將文本更改爲輸入,然後再取消選擇
- 28. 兩個選擇選項更改時的一個選擇框選項更改
- 29. 檢測UIWebView文本選擇中的文本選擇更改
- 30. 是否可以在角材選擇選項中輸入文字?
是的,這是可能的。你試過了嗎? –
是的;有很多方法可以做到這一點。 SO並不是針對具體的實施問題。去嘗試自己實現它,然後回來一個更具體的問題。 – Aeolingamenfel
不,這是不可能的,你不能改變一個元素tagName,但你可以用另一個元素替換它。 – adeneo