虚心请教:如何用JS实现类似COMBOX功能?

yjnjiajia 2003-07-21 03:13:34
要求既可以汉字又可以代码匹配吗?就是随着用户的输入,在下拉框中不断匹配用户输入的部分汉字或代码,当用户输入完整的汉字或代码之后,在文本输入框中显示出来!然后把他们所对应的代码提交上去!
...全文
182 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
seabell 2003-07-24
  • 打赏
  • 举报
回复
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
</head>
<SCRIPT LANGUAGE="javascript">
lastobj=null;
function myselect(j)
{
selstr=document.all("mytext"+j).value;
for(i=0;i<document.all("mysel"+j).options.length;i++)
if(document.all("mysel"+j).options[i].selected)
{
if(document.all("myradio"+j)[1].checked)
{
if(selstr.indexOf(document.all("mysel"+j).options[i].value)>-1)
alert("您已经选过了此项!");
else
{
if(selstr!="")
selstr+=document.all("mycon"+j).value+" "+document.all("mysel"+j).options[i].value+" ";
else
selstr+=document.all("mysel"+j).options[i].value+" ";
}
}
else
{
selstr=document.all("mysel"+j).options[i].value;
break;
}
}
document.all("mytext"+j).value=selstr;
document.all("mytext"+j).title=document.all("mytext"+j).value;
}

function mysearch(obj,j)
{
var len=obj.value.length;
if(len>0)
{
for(i=0;i<document.all("mysel"+j).options.length;i++)
{
if(document.all("mysel"+j).options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all("mysel"+j).options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all("mysel"+j).options[i].selected=true;
break;
}
}
document.all("mytext"+j).title=document.all("mytext"+j).value;
}
}

</SCRIPT>
<XML id="source" src="rt.xml"></XML>
<XML id="style" src="rt.xsl"></XML>
<XML id="source2" src="rt2.xml"></XML>
<XML id="style2" src="rt2.xsl"></XML>
<SCRIPT FOR="window" EVENT="onload">
xslTarget.innerHTML = source.transformNode(style.XMLDocument);
xslTarget2.innerHTML = source2.transformNode(style2.XMLDocument);
lastobj=document.all.mydiv;
document.all.mysel.size=document.all.mysel.options.length>4?5:document.all.mysel.options.length;
document.all.mysel2.size=document.all.mysel2.options.length>4?5:document.all.mysel2.options.length;
document.all.mysel.style.width=document.all.mytext.clientWidth;
document.all.mysel2.style.width=document.all.mytext2.clientWidth;
</SCRIPT>
<body>
<form>
<input type="text" name="mytext" size="30" onfocus="lastobj.style.display='none';document.all.mydiv.style.display='block';lastobj=document.all.mydiv" onkeydown="mysearch(this,'')" onkeyup="mysearch(this,'')" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<div id="xslTarget"></div>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
<input type="radio" name="myradio" value="1" onclick="document.all.mycon.style.display='none';document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mycon.style.display='block';document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
<input type=reset value=reset>
</div>
</form>
<form>
<input type="text" name="mytext2" size="20" onfocus="lastobj.style.display='none';document.all.mydiv2.style.display='block';lastobj=document.all.mydiv2" onkeydown="mysearch(this,2)" onkeyup="mysearch(this,2)" readOnly="readOnly"/><br/>
<div id="mydiv2" style="display:none">
<div id="xslTarget2"></div>
<select name="mycon2"><option value="and">and</option><option value="or">or</option></select>
<input type="radio" name="myradio2" value="1" onclick="document.all.mycon2.style.display='none';document.all.mytext2.value='';document.all.mytext2.readOnly=false"/>单选
<input type="radio" name="myradio2" value="2" checked="checked" onclick="document.all.mycon2.style.display='block';document.all.mytext2.value='';document.all.mytext2.readOnly=true"/>多选
<input type=reset value=reset>
</div>
<form>
<input type="button" value="submit">
</body>
</html>
imafool 2003-07-24
  • 打赏
  • 举报
回复
My God!!……姐……?小弟……?

^O^
yjnjiajia 2003-07-24
  • 打赏
  • 举报
回复
姐姐早:
当我采用很大的XML文件时,下拉框也随之变得很长,没有滚动条,怎样控制下拉框在合适的长度呢?比如只显示前5个选项的长度!还有,当代码和代码意义的长度都很短,下拉框的宽度延就要伸到文本框那么宽!
谢谢!
yjnjiajia 2003-07-24
  • 打赏
  • 举报
回复
up
seabell 2003-07-23
  • 打赏
  • 举报
回复
多个文本框之间切换
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
<SCRIPT LANGUAGE="javascript">
<xsl:comment>
<![CDATA[
function myselect()
{
selstr=document.all.mytext.value;
for(i=0;i<document.all.mysel.options.length;i++)
if(document.all.mysel.options[i].selected)
{
if(document.all.myradio[1].checked)
{
if(selstr.indexOf(document.all.mysel.options[i].value)>-1)
alert("您已经选过了此项!");
else
{
if(selstr!="")
selstr+=document.all.mycon.value+" "+document.all.mysel.options[i].value+" ";
else
selstr+=document.all.mysel.options[i].value+" ";
}
}
else
{
selstr=document.all.mysel.options[i].value;
break;
}
}
//alert(selstr);
document.all.mytext.value=selstr;
document.all.mytext.title=document.all.mytext.value;
}

function mysearch(obj)
{
var len=obj.value.length;
if(len>0)
{
for(i=0;i<document.all.mysel.options.length;i++)
{
if(document.all.mysel.options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all.mysel.options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all.mysel.options[i].selected=true;
break;
}
}
document.all.mytext.title=document.all.mytext.value;
}
}
]]>
</xsl:comment>
</SCRIPT>
</head>
<body onload="lastobj=document.all.mydiv">
<input type="text" name="mytext" size="30" onfocus="lastobj.style.display='none';document.all.mydiv.style.display='block';lastobj=document.all.mydiv" onkeydown="mysearch(this)" onkeyup="mysearch(this)" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<select name="mysel" onchange="myselect()" size="5">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select><br/>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
<input type="radio" name="myradio" value="1" onclick="document.all.mycon.style.display='none';document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mycon.style.display='block';document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
</div>
<input type="text" name="mytext2" size="30" onfocus="lastobj.style.display='none';document.all.mydiv2.style.display='block';lastobj=document.all.mydiv2" onkeydown="mysearch(this)" onkeyup="mysearch(this)" readOnly="readOnly"/><br/>
<div id="mydiv2" style="display:none">同理</div>
<input type="button" value="submit"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
seabell 2003-07-23
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
<SCRIPT LANGUAGE="javascript">
<xsl:comment>
<![CDATA[
function myselect()
{
selstr=document.all.mytext.value;
for(i=0;i<document.all.mysel.options.length;i++)
if(document.all.mysel.options[i].selected)
{
if(document.all.myradio[1].checked)
{
if(selstr.indexOf(document.all.mysel.options[i].value)>-1)
alert("您已经选过了此项!");
else
{
if(selstr!="")
selstr+=document.all.mycon.value+" "+document.all.mysel.options[i].value+" ";
else
selstr+=document.all.mysel.options[i].value+" ";
}
}
else
{
selstr=document.all.mysel.options[i].value;
break;
}
}
//alert(selstr);
document.all.mytext.value=selstr;
document.all.mytext.title=document.all.mytext.value;
}

function mysearch(obj)
{
var len=obj.value.length;
if(len>0)
{
for(i=0;i<document.all.mysel.options.length;i++)
{
if(document.all.mysel.options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all.mysel.options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all.mysel.options[i].selected=true;
break;
}
}
document.all.mytext.title=document.all.mytext.value;
}
}
]]>
</xsl:comment>
</SCRIPT>
</head>
<body>
<input type="text" name="mytext" size="30" onfocus="document.all.mydiv.style.display='block'" onkeydown="mysearch(this)" onkeyup="mysearch(this)" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<select name="mysel" onchange="myselect()" size="5">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select><br/>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
</div>
<input type="radio" name="myradio" value="1" onclick="document.all.mycon.style.display='none';document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mycon.style.display='block';document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
<input type="button" value="submit"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
yjnjiajia 2003-07-23
  • 打赏
  • 举报
回复
姐姐:
如何判断用户对该文本框的填写完毕?当用户对该文本框中填完选项后,两个下拉框和单选按扭就都隐藏起来呢!
seabell 2003-07-23
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
<SCRIPT LANGUAGE="javascript">
<xsl:comment>
<![CDATA[
function myselect()
{
selstr=document.all.mytext.value;
for(i=0;i<document.all.mysel.options.length;i++)
if(document.all.mysel.options[i].selected)
{
if(document.all.myradio[1].checked)
{
if(selstr.indexOf(document.all.mysel.options[i].value)>-1)
alert("您已经选过了此项!");
else
{
if(selstr!="")
selstr+=document.all.mycon.value+" "+document.all.mysel.options[i].value+" ";
else
selstr+=document.all.mysel.options[i].value+" ";
}
}
else
{
selstr=document.all.mysel.options[i].value;
break;
}
}
//alert(selstr);
document.all.mytext.value=selstr;
document.all.mytext.title=document.all.mytext.value;
}

function mysearch(obj)
{
var len=obj.value.length;
if(len>0)
for(i=0;i<document.all.mysel.options.length;i++)
{
if(document.all.mysel.options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all.mysel.options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all.mysel.options[i].selected=true;
break;
}
}
document.all.mytext.title=document.all.mytext.value;
}
]]>
</xsl:comment>
</SCRIPT>
</head>
<body>
<input type="text" name="mytext" size="30" onfocus="document.all.mydiv.style.display='block'" onkeydown="mysearch(this)" onkeyup="mysearch(this)" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<select name="mysel" onchange="myselect()" onclick="myselect()" size="5">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select><br/>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
</div>
<input type="radio" name="myradio" value="1" onclick="document.all.mycon.style.display='none';document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mycon.style.display='block';document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
<input type="button" value="submit"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
yjnjiajia 2003-07-23
  • 打赏
  • 举报
回复
能不能点击单选时,把AMD和OR的选择隐藏,多选时再显示出来?,另外文本框的长度要定死,选项过多时用TOOLTIP功能提示出来!
seabell 2003-07-23
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
<SCRIPT LANGUAGE="javascript">
<xsl:comment>
<![CDATA[
function myselect()
{
selstr=document.all.mytext.value;
for(i=0;i<document.all.mysel.options.length;i++)
if(document.all.mysel.options[i].selected)
{
if(document.all.myradio[1].checked)
{
if(selstr.indexOf(document.all.mysel.options[i].value)>-1)
alert("您已经选过了此项!");
else
{
if(selstr!="")
selstr+=document.all.mycon.value+" "+document.all.mysel.options[i].value+" ";
else
selstr+=document.all.mysel.options[i].value+" ";
}
}
else
{
selstr=document.all.mysel.options[i].value;
break;
}
}
//alert(selstr);
document.all.mytext.value=selstr;
}

function mysearch(obj)
{
var len=obj.value.length;
if(len>0)
for(i=0;i<document.all.mysel.options.length;i++)
{
if(document.all.mysel.options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all.mysel.options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all.mysel.options[i].selected=true;
break;
}
}
}
]]>
</xsl:comment>
</SCRIPT>
</head>
<body>
<input type="text" name="mytext" size="40" onfocus="document.all.mydiv.style.display='block'" onkeydown="mysearch(this)" onkeyup="mysearch(this)" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<select name="mysel" onchange="myselect()" size="5">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
</div>
<input type="radio" name="myradio" value="1" onclick="document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
<input type="button" value="submit"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
yjnjiajia 2003-07-23
  • 打赏
  • 举报
回复
姐:
多选时,选中第一个选项时,在文本框里的第一个选项前面是不是最好不要出现AND或OR呢?
seabell 2003-07-23
  • 打赏
  • 举报
回复
小龙你这个让我改了好一会儿呢:)
用数据岛处理了,但还是不能做到那么通用,现在是每个xml对应一个xsl
“如果代码和代码意义的长度都很短,就让文本框的长度和下拉框的长度尽量相等!”是指让下拉框的宽度延伸到文本框那么宽?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
</head>
<SCRIPT LANGUAGE="javascript">
lastobj=null;
function myselect(j)
{
selstr=document.all("mytext"+j).value;
for(i=0;i<document.all("mysel"+j).options.length;i++)
if(document.all("mysel"+j).options[i].selected)
{
if(document.all("myradio"+j)[1].checked)
{
if(selstr.indexOf(document.all("mysel"+j).options[i].value)>-1)
alert("您已经选过了此项!");
else
{
if(selstr!="")
selstr+=document.all("mycon"+j).value+" "+document.all("mysel"+j).options[i].value+" ";
else
selstr+=document.all("mysel"+j).options[i].value+" ";
}
}
else
{
selstr=document.all("mysel"+j).options[i].value;
break;
}
}
document.all("mytext"+j).value=selstr;
document.all("mytext"+j).title=document.all("mytext"+j).value;
}

function mysearch(obj,j)
{
var len=obj.value.length;
if(len>0)
{
for(i=0;i<document.all("mysel"+j).options.length;i++)
{
if(document.all("mysel"+j).options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all("mysel"+j).options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all("mysel"+j).options[i].selected=true;
break;
}
}
document.all("mytext"+j).title=document.all("mytext"+j).value;
}
}

</SCRIPT>
<XML id="source" src="rt.xml"></XML>
<XML id="style" src="rt.xsl"></XML>
<XML id="source2" src="rt2.xml"></XML>
<XML id="style2" src="rt2.xsl"></XML>
<SCRIPT FOR="window" EVENT="onload">
xslTarget.innerHTML = source.transformNode(style.XMLDocument);
xslTarget2.innerHTML = source2.transformNode(style2.XMLDocument);
lastobj=document.all.mydiv;
document.all.mysel.size=document.all.mysel.options.length;
document.all.mysel2.size=document.all.mysel2.options.length;
</SCRIPT>
<body>
<form>
<input type="text" name="mytext" size="30" onfocus="lastobj.style.display='none';document.all.mydiv.style.display='block';lastobj=document.all.mydiv" onkeydown="mysearch(this,'')" onkeyup="mysearch(this,'')" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<div id="xslTarget"></div>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
<input type="radio" name="myradio" value="1" onclick="document.all.mycon.style.display='none';document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mycon.style.display='block';document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
<input type=reset value=reset>
</div>
</form>
<form>
<input type="text" name="mytext2" size="30" onfocus="lastobj.style.display='none';document.all.mydiv2.style.display='block';lastobj=document.all.mydiv2" onkeydown="mysearch(this,2)" onkeyup="mysearch(this,2)" readOnly="readOnly"/><br/>
<div id="mydiv2" style="display:none">
<div id="xslTarget2"></div>
<select name="mycon2"><option value="and">and</option><option value="or">or</option></select>
<input type="radio" name="myradio2" value="1" onclick="document.all.mycon2.style.display='none';document.all.mytext2.value='';document.all.mytext2.readOnly=false"/>单选
<input type="radio" name="myradio2" value="2" checked="checked" onclick="document.all.mycon2.style.display='block';document.all.mytext2.value='';document.all.mytext2.readOnly=true"/>多选
<input type=reset value=reset>
</div>
<form>
<input type="button" value="submit"/>
</body>
</html>

rt.xsl
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<select name="mysel" onchange="myselect('')" size="2">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select><br/>
</xsl:template>
</xsl:stylesheet>
yjnjiajia 2003-07-23
  • 打赏
  • 举报
回复
姐:
如果代码和代码框的长度都很长,下拉框的长度就让其动态分配!如果代码和代码意义的长度都很短,就让文本框的长度和下拉框的长度尽量相等!每个控件的“重填按扭”最好放在“多选”单选框的右边,点击“重填按扭”后对应的文本框自动清空!
怎么样在保持控件现有功能正常运行的情况下,第一个文本框的下拉框选项来自sex1.xml,
第二个文本框的下拉框选项来自sex2.xml,最好做成方法传参数的形式,每文本框的下拉框选项
可随着传进的指定路径的XML文件名字变化而变化!
seabell 2003-07-23
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
<SCRIPT LANGUAGE="javascript">
<xsl:comment>
<![CDATA[
function myselect(j)
{
selstr=document.all("mytext"+j).value;
for(i=0;i<document.all("mysel"+j).options.length;i++)
if(document.all("mysel"+j).options[i].selected)
{
if(document.all("myradio"+j)[1].checked)
{
if(selstr.indexOf(document.all("mysel"+j).options[i].value)>-1)
alert("您已经选过了此项!");
else
{
if(selstr!="")
selstr+=document.all("mycon"+j).value+" "+document.all("mysel"+j).options[i].value+" ";
else
selstr+=document.all("mysel"+j).options[i].value+" ";
}
}
else
{
selstr=document.all("mysel"+j).options[i].value;
break;
}
}
//alert(selstr);
document.all("mytext"+j).value=selstr;
document.all("mytext"+j).title=document.all("mytext"+j).value;
}

function mysearch(obj,j)
{
var len=obj.value.length;
if(len>0)
{
for(i=0;i<document.all("mysel"+j).options.length;i++)
{
if(document.all("mysel"+j).options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all("mysel"+j).options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all("mysel"+j).options[i].selected=true;
break;
}
}
document.all("mytext"+j).title=document.all("mytext"+j).value;
}
}
]]>
</xsl:comment>
</SCRIPT>
</head>
<body onload="lastobj=document.all.mydiv">
<input type="text" name="mytext" size="30" onfocus="lastobj.style.display='none';document.all.mydiv.style.display='block';lastobj=document.all.mydiv" onkeydown="mysearch(this,'')" onkeyup="mysearch(this,'')" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<select name="mysel" onchange="myselect('')" size="5">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select><br/>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
<input type="radio" name="myradio" value="1" onclick="document.all.mycon.style.display='none';document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mycon.style.display='block';document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
</div>
<input type="text" name="mytext2" size="30" onfocus="lastobj.style.display='none';document.all.mydiv2.style.display='block';lastobj=document.all.mydiv2" onkeydown="mysearch(this,2)" onkeyup="mysearch(this,2)" readOnly="readOnly"/><br/>
<div id="mydiv2" style="display:none">
<select name="mysel2" onchange="myselect(2)" size="5">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select><br/>
<select name="mycon2"><option value="and">and</option><option value="or">or</option></select>
<input type="radio" name="myradio2" value="1" onclick="document.all.mycon2.style.display='none';document.all.mytext2.value='';document.all.mytext2.readOnly=false"/>单选
<input type="radio" name="myradio2" value="2" checked="checked" onclick="document.all.mycon2.style.display='block';document.all.mytext2.value='';document.all.mytext2.readOnly=true"/>多选
</div>
<input type="button" value="submit"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
yjnjiajia 2003-07-23
  • 打赏
  • 举报
回复
最好写成:调用一个方法实现对相同类型的不同ID的控件进行控制,不要每个控件只能调用自己的方法!
yjnjiajia 2003-07-23
  • 打赏
  • 举报
回复
姐:
我试了好几遍都不能让两个文本输入框同时正常工作并实现所有的功能,您把那个同理该成具体的代码让我参考一下好吗!
yjnjiajia 2003-07-22
  • 打赏
  • 举报
回复
UP
yjnjiajia 2003-07-22
  • 打赏
  • 举报
回复
姐,看到你在CSDN上的留言了,我的要求是这样的:
1。保证以前您帮我已实现的那些功能都确实可用的基础上,
2。当用户在文本输入框中开始敲入代码时,下拉列表框自动展开弹出,在弹出的下拉列表框中不断匹配用户输入的代码,把最相近的单个或多个代码高度加亮,按照相近的次序排列显示在下拉列表框的最上端,其他不相近的代码则按照原来的次序在下面依次排列下去!当用户敲入某个完整的代码时,自动把它的对应的代码意义显示在文本输入框中,用户输入的那个完整的代码则消失!
3当用户输入汉字也就是代码意义时,在弹出的下拉列表框中不断匹配用户输入的代码意义,把最相近的单个或多个代码意义加亮,按照相近的次序高度加亮显示排列在下拉列表框的最上端,其他不相近的代码意义则按照原来的次序在下面依次排列下去!用户自己敲入的代码意义不完整或不属下拉列表框的代码意义范围内时,用户点提交按扭时要弹出警告提示用户"不完整或不合法的代码意义,无法提交"!
4。多选时,假设用户已自己手工敲入一个完整的代码意义,并已在文本框中显示出来了,当用户点击(选中)下拉列表框中另一个代码意义时,被选中的代码意义将自动追加在已输入的代码意义之后,并用分号隔开!
5。用户自己敲入的代码意义不完整或不属下拉列表框的代码意义范围内时,用户在下拉列表框随意选择一个代码意义就可将当前文本框的不完整的那个代码覆盖掉!
seabell 2003-07-22
  • 打赏
  • 举报
回复
写了一个基本的,如果xml文件本身是排序的,效果会好些
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
<SCRIPT LANGUAGE="javascript">
<xsl:comment>
<![CDATA[
function myselect()
{
selstr=document.all.mytext.value;
for(i=0;i<document.all.mysel.options.length;i++)
if(document.all.mysel.options[i].selected)
{
if(document.all.myradio[1].checked)
{
if(selstr.indexOf(document.all.mysel.options[i].value)>-1)
alert("您已经选过了此项!");
else
//selstr+=document.all.mysel.options[i].value+";";
selstr+=document.all.mycon.value+" "+document.all.mysel.options[i].value+" ";
}
else
{
selstr=document.all.mysel.options[i].value;
break;
}
}
//alert(selstr);
document.all.mytext.value=selstr;
}

function mysearch(obj)
{
var len=obj.value.length;
if(len>0)
for(i=0;i<document.all.mysel.options.length;i++)
{
if(document.all.mysel.options[i].text.substring(0,len)==obj.value.substring(0,len)||document.all.mysel.options[i].value.substring(0,len)==obj.value.substring(0,len))
{
document.all.mysel.options[i].selected=true;
break;
}
}
}
]]>
</xsl:comment>
</SCRIPT>
</head>
<body>
<input type="text" name="mytext" size="40" onfocus="document.all.mydiv.style.display='block'" onkeydown="mysearch(this)" onkeyup="mysearch(this)" readOnly="readOnly"/><br/>
<div id="mydiv" style="display:none">
<select name="mysel" onchange="myselect()" size="5">
<xsl:for-each select="RTS/RT">
<option>
<xsl:attribute name="value">
<xsl:value-of select="DMYY"/>
</xsl:attribute>
<xsl:value-of select="DM"/>  
<xsl:value-of select="DMYY"/>
</option>
</xsl:for-each>
</select>
<select name="mycon"><option value="and">and</option><option value="or">or</option></select>
</div>
<input type="radio" name="myradio" value="1" onclick="document.all.mytext.value='';document.all.mytext.readOnly=false"/>单选
<input type="radio" name="myradio" value="2" checked="checked" onclick="document.all.mytext.value='';document.all.mytext.readOnly=true"/>多选
<input type="button" value="submit"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
yjnjiajia 2003-07-22
  • 打赏
  • 举报
回复
up
加载更多回复(5)

87,988

社区成员

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

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