javaScript下拉列表限制问题

现在想做一个部门排序,然后从数据库里读出部门里的人数(这个我能实现),在每个人记录后面JSTL用循环标签加个下拉列表框,下拉列表框中的数值是和数据库中(部门表)中人数是一... 现在想做一个部门排序,然后从数据库里读出部门里的人数(这个我能实现),在每个人记录后面JSTL用循环标签加个下拉列表框,下拉列表框中的数值是和数据库中(部门表)中人数是一致的,现在想为部分这些人做个排序,根据下拉列表选中的值,例如选中的是1,就是第一名,如果选中的是2,就是第二名,如果选中的是5就是第5名,但是我想完成的这个功能是这样的,不允许有二个或更多的人拥有一个名次,就是说,不能有2个人都是第一名,再白点说就是,下拉列表中的值不允许点重复的值。 展开
 我来答
韦涵涵
2009-04-08 · TA获得超过3892个赞
知道大有可为答主
回答量:1034
采纳率:100%
帮助的人:1507万
展开全部
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<script type="text/javascript" charset="utf-8">
var sele1;
var sele2;
var sele3;
var sele4;
var sele5;
var i1;
var i2;
var i3;
var i4;
var i5;
function initVars(){
sele1=document.getElementById('s1');//get select1 object
sele2=document.getElementById('s2');//get select2 object
sele3=document.getElementById('s3');//get select3 object
sele4=document.getElementById('s4');//get select4 object
sele5=document.getElementById('s5');//get select5 object
}
function judgeValue(select){
initVars();
i1=sele1.selectedIndex;
i2=sele2.selectedIndex;
i3=sele3.selectedIndex;
i4=sele4.selectedIndex;
i5=sele5.selectedIndex;
var a=new Array(i1,i2,i3,i4,i5);

var i=0,k;
for(k=0;k<5;k++){
if(select.selectedIndex==a[k]){
i++;
}
}
if(i>1){
alert('该数字已选,请重选!');
select.selectedIndex=0;
return false;
}

}
</script>
<title>display</title>
</head>
<body>
1.
<select id="s1" onchange="judgeValue(this);">
<option>
--请选择--
</option>
<c:forEach items="${userlist}" var="p" varStatus="i">
<option>
${i.index+1 }
</option>
</c:forEach>
</select>

2.
<select id="s2" onchange="judgeValue(this);">
<option>
--请选择--
</option>
<c:forEach items="${userlist}" var="p" varStatus="i">
<option>
${i.index+1 }
</option>
</c:forEach>
</select>

3.
<select id="s3" onchange="judgeValue(this);">
<option>
--请选择--
</option>
<c:forEach items="${userlist}" var="p" varStatus="i">
<option>
${i.index+1 }
</option>
</c:forEach>
</select>

4.
<select id="s4" onchange="judgeValue(this);">
<option>
--请选择--
</option>
<c:forEach items="${userlist}" var="p" varStatus="i">
<option>
${i.index+1 }
</option>
</c:forEach>
</select>

5.
<select id="s5" onchange="judgeValue(this);">
<option>
--请选择--
</option>
<c:forEach items="${userlist}" var="p" varStatus="i">
<option>
${i.index+1 }
</option>
</c:forEach>
</select>
</body>
</html>

已经发给楼主了..

祝楼主早日成功!!!
defaultred
2009-04-07 · TA获得超过129个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:261万
展开全部
解决重复数据办法:
1.后台数据库取数据时 消除重复数据
select distinct name,min(id) as id from 部门表 group by name order by id;
这样获得就是没有重复的数据了 min(id)可以改成max(id);看情况而定
2.后台数据库有重复数据,在前台使用js消除重复数据;
假设数组结构如下:
var arr = [
{id:1,name:'a'},
{id:2,name:'b'}, //重复
{id:3,name:'c'},
{id:4,name:'b'}, //重复
{id:5,name:'d'}
];

function merge(array){
var arr = array;
var len = arr.length;
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i].name == arr[j].name){
for(var k=j;k<arr.length-1;k++){
arr[k] = arr[k+1];
arr[k].id -= 1;
}//end for k
arr.pop();
}//end if
}//end for j
}//end for i
return arr;
}
arr = merge(arr);
得到结果如下:
arr = [
{id:1,name:'a'},
{id:2,name:'b'},
{id:3,name:'c'},
{id:4,name:'d'}
];
消除了重复数据b,并且顺序id自动.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapp4eJoEwV8xNyw3
2009-04-07 · TA获得超过514个赞
知道小有建树答主
回答量:689
采纳率:0%
帮助的人:585万
展开全部
如果我没理解错的话,可以有这样的一个思路:
建一个全局的二维数组,比如var rank = new Array();
rank['1'] = 'xxx';
其中'1'表示第一名,xxx表示第一名的名字或者它在页面中的排序都可以
这样就保存了一份关于名称列表对应的排名的映射
比如选把某个人的排名设置为5,则先查询一下rank['5']是不是已经有了,如果有了就表示已经有其他人是第5名了,则你这次选择无效,也就是什么都不作。如果rank['5']还没有被赋值,则给它赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老人与孩v动手洞脑
2009-04-07 · TA获得超过599个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:328万
展开全部
<HTML>
<HEAD>
<TITLE></TITLE>
<script>
</body>
</HTML>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4bfe8b9
2009-04-07 · TA获得超过161个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:116万
展开全部
这分我要了。下班回家给你搞定.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
suxiaoning168
2009-04-07
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
假如你用得是EXTJS这个当前最流行的框架,你就知道这个问题根本就不是啥大问题了,Extjs这个框架支持前台后台排序的!并且可以按不同的列来排序的!!所以你可以去了解一下啊extjs这个框架!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式