我想要一个下拉菜单,用户可以在其中从几个预定义的选项中进行选择,但我也想给他插入用户特定值的选项,我在想有一个选项,"user specific"
这反过来又允许用户当用户选择"user specific"
选项时,在出现或可编辑的文本框中插入用户特定条目。任何人有任何想法我可以如何实现这是 HTML 和 Javascript?
谢谢你
我想要一个下拉菜单,用户可以在其中从几个预定义的选项中进行选择,但我也想给他插入用户特定值的选项,我在想有一个选项,"user specific"
这反过来又允许用户当用户选择"user specific"
选项时,在出现或可编辑的文本框中插入用户特定条目。任何人有任何想法我可以如何实现这是 HTML 和 Javascript?
谢谢你
将一个onchange
事件附加到选择,当他选择“自定义”或类似的东西时,input
在选择下方显示一些。这个输入最初应该是隐藏的(css display:none
)。当用户选择“自定义”时,请制作它display:inline
。
Jukka 写了一篇关于如何创建类似组合框的效果的文章。我只是略读了一下,但它看起来很容易理解,而且他的内容通常质量很高。
你可以这样做:
<select id="myid" onchange="doIt(this);">
optons...
</select>
<script type="text/javascript">
function doIt(field) {
if (field.value === 'user specific')
{
var tbox = document.createElement('input');
tbox.setAttribute('type', 'text');
document.form_name.appendChild(tbox);
}
}
</script>
见这里:http: //jsfiddle.net/EscRV/
html
<select id="mySelect">
<option>value 1</option>
<option value="[new]">new</option>
</select>
js
// get a cross-browser function for adding events, place this in [global] or somewhere you can access it
var on = (function(){
if (window.addEventListener) {
return function(target, type, listener){
target.addEventListener(type, listener, false);
};
}
else {
return function(object, sEvent, fpNotify){
object.attachEvent("on" + sEvent, fpNotify);
};
}
}());
var mySelect = document.getElementById("mySelect");
on(mySelect, "change", function(){
if (this.value === "[new]") {
var newOptionName = prompt("input new option");
if (newOptionName){
mySelect.options[mySelect.options.length] = new Option(newOptionName);
this.value= newOptionName;
}
}
});
以下代码将有助于解决您的问题。
<html>
<head></head>
<body>
<select id="sbox">
<option value="1" onclick="hideUserOption();">First option</option>
<option value="2" onclick="hideUserOption();">second option</option>
<option value="3" onclick="showUserOption();">User Specific</option>
</select>
<div id="userOptions" style="display:none">
<input type="text" />
<input type="submit" value="Save"/>
</div>
<script type="text/javascript">
function showUserOption() {
var userOptions = document.getElementById("userOptions");
userOptions.style.display = "block";
}
function hideUserOption() {
var userOptions = document.getElementById("userOptions");
userOptions.style.display = "none";
}
</script>
</body>
</html>