求一个javascript问题,很难低手别进!

JavaBoyCaoJi 2003-08-30 09:49:03
设置查询条件进行连动出来
在一般的web开发当中通过设置一些查询条件莱进行组合查询,这里就会遇到如此问题,对某些字段选择候可以出来一个下拉菜单让用户进行选择查询条件,还有一些字段选择之后没有用户可选项目只能够用户进行手工输入查询条件,
如此的javascript如何设计大家讲讲,谢谢咯!
...全文
74 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
cauiot 2003-09-08
  • 打赏
  • 举报
回复
hao
JavaBoyCaoJi 2003-09-05
  • 打赏
  • 举报
回复
兄弟这个我也实现了呵呵,昨天晚上,呵呵,不过也是非常感谢你的帮组!!
awaysrain 2003-09-05
  • 打赏
  • 举报
回复
移动到最上,最下

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript">
function first()
{
if(select1.selectedIndex==-1)
return
var tmpText = select1.options[select1.selectedIndex].text
var tmpValue = select1.options[select1.selectedIndex].value
for(var i=select1.selectedIndex;i>0;i--)
{
select1.options[i].text=select1.options[i-1].text
select1.options[i].value=select1.options[i-1].value
}
select1.options[0].text=tmpText
select1.options[0].value=tmpValue
}
function last()
{
if(select1.selectedIndex==-1)
return
var tmpText = select1.options[select1.selectedIndex].text
var tmpValue = select1.options[select1.selectedIndex].value
for(var i=select1.selectedIndex;i<select1.options.length-1;i++)
{
select1.options[i].text=select1.options[i+1].text
select1.options[i].value=select1.options[i+1].value
}
select1.options[select1.options.length-1].text=tmpText
select1.options[select1.options.length-1].value=tmpValue
}
</script>
</head>

<body>
<p>
<select name="select1" size="5">
<option value="111">1111</option>
<option value="222">222</option>
<option value="333">333</option>
<option value="444">444</option>
<option value="555">555</option>
</select>
</p>
<p>
<input type="submit" name="Submit" value="最上" onClick="first()">
<input type="submit" name="Submit2" value="最下" onClick="last()">
</p>
</body>
</html>
suhuoqiang 2003-09-05
  • 打赏
  • 举报
回复
XML+DOM+JS/VBS一定行的!!!我试过了
shutdown 2003-09-04
  • 打赏
  • 举报
回复
去看看www.zydsoft.com的e商2003的在线演示。
JavaBoyCaoJi 2003-09-04
  • 打赏
  • 举报
回复
下面这个写法是把列表当中的内容至顶对吗,大家看看咯。
function moveroof(multiplist){
var s = multiplist;

v = new Array();
for(var i=1;i<s.length;i++) {
if(! s.options[i-1].selected && s.options[i].selected) {
v.value = s.options[i].value;
v.text = s.options[i].text;
v.selected = s.options[i].selected;
while(i>=1){
s.options[i].value = s.options[i-1].value;
s.options[i].text = s.options[i-1].text;
// s.options[i+1].selected = s.options[i-1].selected;
// alert("i"+i);
i--;
}
s.options[0].value = v.value;
s.options[0].text = v.text;
s.options[0].selected = v.selected;
}
}
}
meizz 2003-09-04
  • 打赏
  • 举报
回复
对于 combo box 我写了一个例子, 目前在IE6下运行正常, 兼容性我正在进一步的做:
http://expert.csdn.net/Expert/TopicView1.asp?id=2143373

下拉框联动的问题我在以前做过一个省市名联动的例子, 在ASP版式的FAQ里有.

其实联动的问题主要是发生变化时后面的数据如何取的问题:
1. 在页面生成的时候就将数据放在页面里的JS里
2. 根据要求通过 xmlhttp 或者 隐藏的 iframe 与服务器端交互得到新数据
cwbboy 2003-09-03
  • 打赏
  • 举报
回复
真厉害啊楼主,竟然能问出这么难的问题,佩服佩服,底手偶是为了学习才进来的。
JavaBoyCaoJi 2003-09-03
  • 打赏
  • 举报
回复
to awaysrain(绝对零度)
非常感谢你的回答,对了xmlhttp具体如何用呢?还有你给的这个列子当我输入错误的时候没有回退功能,还有我没有选择条件的时候也可以输入相应的查询提交如此是不合理的吧。
还有在我没有选择and or的时候也可以进行查询条件的输入,这个如何去掉,谢谢你咯。
还有用你的列子的时候,当selectOk动态生成项目的时候,我切换到另外一个页面,取得其值都是空的,这是怎么回事情。
awaysrain 2003-09-03
  • 打赏
  • 举报
回复
我觉得用textarea可能会好一点
“因为我那些参数是否是下拉选择是未知的。”
这里需要你判断(数据库里需要记录)是否有下拉选择,有的话是select,没有是text
可以用XMLHTTP

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript" type="text/JavaScript">
function test()
{
if(form1.select1.value=="cjj")
awaysrain.innerHTML="<select name=aaa><option value=男>男</option><option value=女>女</option></select>"
else
awaysrain.innerHTML="<input type=\"text\" name=\"aaa\">"

}
function ok()
{
form1.textarea.value+=form1.select1.value +"='" + form1.aaa.value +"'"
}
function and()
{
form1.textarea.value+= " AND "
}
function or()
{
form1.textarea.value+= " OR "
}
function left()
{
form1.textarea.value+= "("
}
function right()
{
form1.textarea.value+= ")"
}

</script>
</head>

<body onload="test()">
<form name="form1" method="post" action="">
<table width="410" border="1" cellspacing="0" cellpadding="5">
<tr>
<td width="13%" height="33"> <select name="select1" onChange="test()">
<option value="cjj">cjj</option>
<option value="xuii">xuii</option>
<option value="luzg">luzg</option>
<option value="tomcat_jmx">tomcat_jmx</option>
</select></td>
<td width="87%" nowrap><div id="awaysrain"></div></td>
</tr>
<tr>
<td height="33"> <textarea name="textarea" rows="5"></textarea>
</td>
<td height="33"><input type="button" name="Button" value="AND" onClick="and()"> <input type="button" name="Submit2" value="OR" onClick="or()">
<br> <input type="button" name="Submit22" value="(" onClick="left()">
<input type="button" name="Submit23" value=")" onClick="right()"> <br>
<input type="button" name="Button2" value="确定" onClick="ok()"> </td>
</tr>
</table>
</form>
</body>
</html>
JavaBoyCaoJi 2003-09-03
  • 打赏
  • 举报
回复
to awaysrain(绝对零度)
高手呀!这个列子不错,但是现在碰到了这个问题,这个主要是用来做组合查询的,你这个基本功能已经实现,但是和实际比较起来还有一定的差距,因为我那些参数是否是下拉选择是未知的。
在选择第2个条件的时候有并且 和或者两中如何完善到你哪个列子上,如果传替参数到后台,给个提示,你哪个列子这些东西没有涉及到
谢谢了
awaysrain 2003-09-03
  • 打赏
  • 举报
回复
简单的演示

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript" type="text/JavaScript">
function test()
{
if(form1.select1.value=="cjj")
awaysrain.innerHTML="<select name=aaa><option value=男>男</option><option value=女>女</option></select>"
else
awaysrain.innerHTML="<input type=\"text\" name=\"aaa\">"

}
function ok()
{
var oOption = document.createElement('OPTION');
oOption.text = form1.select1.value + "='" + form1.aaa.value + "'";
oOption.value = form1.select1.value + "='" + form1.aaa.value + "'";
form1.selectOk.options.add(oOption);
}
function del()
{
form1.selectOk.options.remove(form1.selectOk.selectedIndex)
}
</script>
</head>

<body onload="test()">
<form name="form1" method="post" action="">
<table width="242" border="1" cellspacing="0" cellpadding="5">
<tr>
<td width="13%" height="33"> <select name="select1" onChange="test()">
<option value="cjj">cjj</option>
<option value="xuii">xuii</option>
<option value="luzg">luzg</option>
<option value="tomcat_jmx">tomcat_jmx</option>
</select></td>
<td width="87%" nowrap><div id="awaysrain"></div>
</td>
</tr>
<tr>
<td height="33" colspan="2"><select name="selectOk" size="5">
</select>
<input type="button" name="Button2" value="确定" onClick="ok()">
<input type="button" name="Button" value="删除" onClick="del()"></td>
</tr>
</table>
</form>
</body>
</html>
awaysrain 2003-09-03
  • 打赏
  • 举报
回复
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<script language="JavaScript">
function init(name)
{
var tmp = document.getElementsByName(name)
for(var i=0;i<tmp.length;i++)
{
tmp[i].checked=false
}
}
function checkBoxValue(name)
{
var tmp = document.getElementsByName(name)
for(var i=0;i<tmp.length;i++)
{
if(tmp[i].checked)
return tmp[i].value
}
return null
}
function test()
{
//这里可以修改,根据不同的选项生成select或者text
if(form1.select1.value=="address")
awaysrain.innerHTML="<select name=myvalue><option value=杭州>杭州</option><option value=苏州>苏州</option><option value=省略了……>省略了……</option></select>"
else
awaysrain.innerHTML="<input type=\"text\" name=myvalue>"
}

function add()
{
if(checkBoxValue("relation")==null)
{
alert("请选择关系符!")
return;
}
if(form1.selectOk.length>=1)
{
if(checkBoxValue("logic")==null)
{
alert("请选择逻辑符!")
return;
}
}
else
{
if(checkBoxValue("logic")!=null)
{
alert("请选择不能选择逻辑符!")
init("logic")
return;

}

}

var oOption = document.createElement('OPTION');
var str=""
str = form1.select1.value + checkBoxValue("relation") + "'" + form1.myvalue.value + "'";
if(checkBoxValue("logic")!=null)
str = checkBoxValue("logic") + " " + str;

oOption.text = str
oOption.value = str;
form1.selectOk.options.add(oOption);
init("relation")
init("logic")
}
function del()
{
form1.selectOk.options.remove(form1.selectOk.selectedIndex)
}
</script>
</head>

<body onload="test()">
<form name="form1" method="post" action="">
<table border="1" cellspacing="0" cellpadding="5">
<tr>
<td width="16%" nowrap>组合条件</td>
<td width="44%" nowrap>关系符</td>
<td width="12%" nowrap>值</td>
<td width="28%" nowrap>逻辑符</td>
</tr>
<tr>
<td nowrap><select name="select1" onChange="test()">
<option value="title">title</option>
<option value="name">name</option>
<option value="address">address</option>
</select></td>
<td nowrap>
<input type="radio" name="relation" value=">">>
<input type="radio" name="relation" value=">=">>=
<input type="radio" name="relation" value="=">=
<input type="radio" name="relation" value="<="> <=
<input type="radio" name="relation" value="<"> <
</td>
<td nowrap id="awaysrain"> </td>
<td nowrap>
<input type="radio" name="logic" value="AND">AND
<input type="radio" name="logic" value="OR">OR
</td>
</tr>
<tr>
<td colspan="3" nowrap><select name="selectOk" size="5" style="width:100%">
</select></td>
<td nowrap><input type="button" name="Button" value="确定" onClick="add()">
<input type="button" name="Button" value="删除" onclick="del()"></td>
</tr>
</table>
</form>
</body>
</html>
JavaBoyCaoJi 2003-09-03
  • 打赏
  • 举报
回复
我现在的要求是如此的
组合条件 关系符 值 逻辑符
title 大于 aa
name 等于 小张 且
address 等于 杭州

我要求是选择一个title的时候multiple select当中就显示出相关的内容。
加一个显示一个,特别是要注意逻辑符的要求,大家能够详细给出解决方法吗?
一定给分。
JavaBoyCaoJi 2003-09-02
  • 打赏
  • 举报
回复
to liuruhong
兄弟你说得也太含糊了吧,你所说的方法,在实际的应用当中还是比较少的吧,我也比较难理解起整体的设计思路
要不给个例子看看咯。
各位兄弟继续发表你们的高论咯!
liuruhong 2003-09-02
  • 打赏
  • 举报
回复
to JavaBoyCaoJi(老曹)
xmlhttp能够解决你再同一个页面上操作,而不才采用刷新页面的办法,至于具体的内容,你可以参考xml sdk里头的IHTTPRequest帮助

至于你说的那些界面的要求,我觉得主要是业务表达的问题了,不外乎就是通过图层的显示合隐藏来完成,至于那些数据,你可以通过xmlhttp或者iframe的方式从服务器端动态加载

good lucky
JavaBoyCaoJi 2003-09-02
  • 打赏
  • 举报
回复
to liuruhong(蓝色街灯)
xmlhttp 具体指得是什么东西,我不大了解撒。
to xuzuning(唠叨)
数据词典应包括:字段名、说明、数据类型、联动键...这些东西要自己设计一个数据库吗,我现在是不想设计数据库的基础上来做地,你能够说说具体的实现方法吗,最后能够给一个例子,可以吗,一定给分。
xuzuning 2003-09-02
  • 打赏
  • 举报
回复
其实只要构造好数据词典,一切都不难
数据词典应包括:字段名、说明、数据类型、联动键...
liuruhong 2003-09-02
  • 打赏
  • 举报
回复
to JavaBoyCaoJi(老曹)
说实话,我还是没有明白你这个的所谓难度在于哪里,是代码量大还是说有些的技术关无法解决?

至于你说的那些查询条件的显示通过层的隐藏和显示应该可以解决问题的,后台刷新方面,使用IFrame或者xmlhttp
sunicom 2003-09-02
  • 打赏
  • 举报
回复
gz
加载更多回复(31)

87,904

社区成员

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

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