求助:怎样实现可以编辑的下拉列表框?谢谢

seamg 2004-06-21 09:44:41
想在jsp文件中,使用一个下拉列表框,既可以选择内容,又可以自己输入一项内容。效果如同qq登录界面中的qq号码的下拉列表框。曾经查找了一些资料,见有用js实现的类似功能,可是一放在form中,下拉列表框就变成只能选择的下拉列表框了。
...全文
687 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
seamg 2004-07-08
  • 打赏
  • 举报
回复
谢谢大家的关注与回答,结贴!
seamg 2004-07-08
  • 打赏
  • 举报
回复
不错,谢谢,
TyroneChan 2004-07-07
  • 打赏
  • 举报
回复
小弟的實現方法是,在下拉列框中添加一個選項(例如:"..."或者"手工輸入"),當用戶選擇該項時(用onchange進行判斷),彈出一個prompt窗口供用戶輸入資料,點擊prompt窗口確定後將用戶在prompt中手工輸入的字段添加到下拉列框中,雖然這樣有點麻煩,但也湊和著用吧,當然,如果你用的是JSP頁面的話,可以對用戶手工輸入的字段進行過濾和判斷

相關主要代碼:
var promptValue = window.prompt("請輸入:","");
if(promptValue != ""){
var oOption = document.createElement("OPTION");
oOption.text = promptValue;
oOption.value = promptValue;
document.all.sel.add(oOption,0);
form.sel.selectedIndex=0;
}
swj_20 2004-07-07
  • 打赏
  • 举报
回复
mark
seamg 2004-07-05
  • 打赏
  • 举报
回复

下面的ceshi.jsp基本能实现可选可输入的功能,缺点是下拉列表框位置固定不变,请问如何改正,才能让下拉列表框的位置 随着所在table的位置的变化 而变化。


文件名称 ceshi.jsp


<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" %>
<html>
<head>
<style>
<!--
.cls1 { position:absolute; left:250px; top:89px; width:216px; height:72px; z-index:1; }
.cls2 { position:absolute; left:250px; top:89px; width:95px; height:18px; z-index:2 }
input { font-size: 12px; padding-top: 2px; padding-left: 2px;width:127;}
//-->
</style>
</head>
<script>
<!--
function addOption(pos){

if(event.keyCode==13)
{
var select_obj = document.getElementById("myselect");
var text_value = document.getElementById("test").value;

if (select_obj.length)
{
for (var i=0;i<select_obj.length;i++)
{
// 如果已经存在,不添加,直接退出
if (select_obj.options[i].text==text_value)
alert("选项已存在,请重新输入");
}
}
var the_option= new Option(text_value,text_value);

select_obj.add(the_option);

select_obj.selectedIndex = select_obj.options.length-1
}

}

function kk(){
document.getElementById('test2').value=document.getElementById("myselect").selectedIndex.value

}
//-->
</script>
<form name="form1" method="post" action="ceshi.jsp">
<table>
<%=getC(request.getParameter("test2"))%>
<tr>
<td>
<div class="cls1" style="clip: rect(3 280 21 110)" >
<select name="myselect" style="width:127" onchange="document.getElementById('test2').value=this.value">
<option >晴选择</option>
<option value="ln">ln</option>
<option value="lk">lk</option>
</select>
</div>
<div class="cls2">

<input type="text" name="test2" onkeydown="addOption()" size="20" style="width: 127; height: 23">
</div>
</td>
</tr>
<tr>
</td>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
seamg 2004-07-03
  • 打赏
  • 举报
回复
好痛苦,依旧没有搞定
pengpong 2004-07-02
  • 打赏
  • 举报
回复
up
seamg 2004-07-02
  • 打赏
  • 举报
回复
hehe,大家有没有一个例子让俺学习学习阿
俺还是没有搞明白
没有改造出一个可以选择的下拉列表框,如果下拉列表框中没有相关选项,又可以自己输入的那种下拉列表框
此下拉列表框可以放在form中,可以保存(或选择或输入的)值
CsdnRob 2004-07-02
  • 打赏
  • 举报
回复
作了如下修改,可是不知道怎样将下拉列表框,放在一个table中(位置随table的变化而变化),而不是一个固定的位置 <html> <head> <style> <!-- .cls1 { position:absolute; left:250px; top:89px; width:216px; height:72px; z-index:1; } .cls2 { position:absolute; left:250px; top:89px; width:95px; height:18px; z-index:2 } input { font-size: 12px; padding-top: 2px; padding-left: 2px;width:127;} //--> </style> </head> <script> <!-- function addOption(pos){ if(event.keyCode==13) { var select_obj = document.getElementById("myselect"); var text_value = document.getElementById("test").value; if (select_obj.length) { for (var i=0;i<select_obj.length;i++) { // 如果已经存在,不添加,直接退出 if (select_obj.options[i].text==text_value) alert("选项已存在,请重新输入"); } } var the_option= new Option(text_value,text_value); select_obj.add(the_option); select_obj.selectedIndex = select_obj.options.length-1 } } //--> </script> <form name="form1" method="post" action="k.jsp"> <div class="cls1" style="clip: rect(3 280 21 110)"> <select name="myselect" style="width:127" onchange="document.getElementById('test').value=this.value"> <option value="ln">ln</option> <option value="lk">lk</option> </select> </div> <div class="cls2"> <input type="text" name="test" onkeydown="addOption()" size="20" style="width: 127; height: 23"> </div> <input type="submit" value="提交"> </body> </html>
seamg 2004-07-01
  • 打赏
  • 举报
回复
作了如下修改,可是不知道怎样将下拉列表框,放在一个table中(位置随table的变化而变化),而不是一个固定的位置
<html>
<head>
<style>
<!--
.cls1 { position:absolute; left:250px; top:89px; width:216px; height:72px; z-index:1; }
.cls2 { position:absolute; left:250px; top:89px; width:95px; height:18px; z-index:2 }
input { font-size: 12px; padding-top: 2px; padding-left: 2px;width:127;}
//-->
</style>
</head>
<script>
<!--
function addOption(pos){

if(event.keyCode==13)
{
var select_obj = document.getElementById("myselect");
var text_value = document.getElementById("test").value;

if (select_obj.length)
{
for (var i=0;i<select_obj.length;i++)
{
// 如果已经存在,不添加,直接退出
if (select_obj.options[i].text==text_value)
alert("选项已存在,请重新输入");
}
}
var the_option= new Option(text_value,text_value);

select_obj.add(the_option);

select_obj.selectedIndex = select_obj.options.length-1
}

}
//-->
</script>
<form name="form1" method="post" action="k.jsp">
<div class="cls1" style="clip: rect(3 280 21 110)">
<select name="myselect" style="width:127" onchange="document.getElementById('test').value=this.value">
<option value="ln">ln</option>
<option value="lk">lk</option>
</select>
</div>
<div class="cls2">
<input type="text" name="test" onkeydown="addOption()" size="20" style="width: 127; height: 23">
</div>
<input type="submit" value="提交">
</body>
</html>
seamg 2004-06-29
  • 打赏
  • 举报
回复
比较有难度,js看了一些,没大完全掌握
haichuang 2004-06-28
  • 打赏
  • 举报
回复
html是不能完全实现这个的, 各种实现方法都有这样那样的问题. 还是考虑采用其它表示方法吧, 没必要在一棵树上吊死的.
seamg 2004-06-28
  • 打赏
  • 举报
回复
awaysrain(绝对零度)(新的一年,新的开始) ?

我想问一下,知道下拉列表框的位置怎样才能改变吗?这个好象是absolute
所以就固定到一个位置,怎样才能部署到一个table或form 中
seamg 2004-06-28
  • 打赏
  • 举报
回复
谢谢,awaysrain(绝对零度)(新的一年,新的开始) ,谢谢你,可是你给的例子中,选中的option
显示它的value,而不是text得值
kui(kui) 谢谢你的关注,例子功能很好,可是俺把它放在form中,层的显示就乱了

另外,我想实现可以编辑的下拉列表框,目的,就是除了可以选择的项外,还可以自己输入相关项的内容,比如专业,已经有11项了,而我的专业不能归于任何一个,就自己输入一项,保存
awaysrain 2004-06-28
  • 打赏
  • 举报
回复
在htm中可编辑的下拉列表框都是用模拟来实现的,你去javascript版去搜索一下吧,看看有没有比较好的解决方法
majy 2004-06-24
  • 打赏
  • 举报
回复
算了吧,不要在html中实现这种功能,会让你很痛苦的,没必要,一定有其他解决方案的
seamg 2004-06-24
  • 打赏
  • 举报
回复
en,先查查资料把
kui 2004-06-24
  • 打赏
  • 举报
回复
下载后可直接用:http://joe.2418.com/programme/html/inputAndDrop.rar
http://community.csdn.net/Expert/topic/3111/3111421.xml?temp=.5435297
awaysrain 2004-06-24
  • 打赏
  • 举报
回复
<html>
<head>
<style>
<!--
.cls1 { position:absolute; left:250px; top:89px; width:216px; height:72px; z-index:1; }
.cls2 { position:absolute; left:250px; top:89px; width:95px; height:18px; z-index:2 }
input { font-size: 12px; padding-top: 2px; padding-left: 2px;width:127;}
//-->
</style>
</head>
<script>
<!--
function addOption(pos){

if(event.keyCode==13)
{
var select_obj = document.getElementById("myselect");
var text_value = document.getElementById("test").value;

if (select_obj.length)
{
for (var i=0;i<select_obj.length;i++)
{
// 如果已经存在,不添加,直接退出
if (select_obj.options[i].text==text_value)
alert("选项已存在,请重新输入");
}
}
var the_option= new Option(text_value,text_value);

select_obj.add(the_option);

select_obj.selectedIndex = select_obj.options.length-1
}

}
//-->
</script>
<div class="cls1" style="clip: rect(3 280 21 110)">
<select name="myselect" style="width:127" onchange="document.getElementById('test').value=this.value">
</select>
</div>
<div class="cls2">
<input type="text" name="test" onkeydown="addOption()" size="20" style="width: 127; height: 23">
</div>

</body>
</html>
nhk166 2004-06-24
  • 打赏
  • 举报
回复
可以用JS控制一个隐藏的图层来实现啦
加载更多回复(11)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧