按住Shift键快速多选
如何用javaScript实现按住Shift键快速多选 问题点数:100、回复次数:8Top
1 楼dxj1234(Kindly⊙Wolf)回复于 2005-08-01 16:59:32 得分 0
页面里本身不支持多选
看来只有自己搞个集合存储选中的对象Top
2 楼jon1365(jon)回复于 2005-08-01 17:02:40 得分 0
指选种多选框Top
3 楼laughsmile(海边的星空)回复于 2005-08-01 22:30:09 得分 0
<body >
<form>
<table >
<tr id="item1" onclick="checkSelect(this)" ><td>11111111</td></tr>
....
<tr id="item20" onclick="checkSelect(this)"><td>222222</td></tr>
</table>
<form>
<script>
function checkSelect(i){
if (window.event.shiftKey)
i.style.backgroundColor='#FFCC66'
else
i.style.backgroundColor='#FFffff'
}
</script>
</BODY>Top
4 楼joneyonly()回复于 2005-08-02 08:42:09 得分 0
markTop
5 楼waiting007(威霆)回复于 2005-08-02 09:08:46 得分 0
学习Top
6 楼su27007(人外有人,天外有天)回复于 2005-08-02 09:15:54 得分 0
laughsmile(海边的星空) 说的这个不错,值得学习!Top
7 楼jon1365(jon)回复于 2005-08-02 11:46:48 得分 0
可能是我说的不清楚吧。
我的意思是按住 Shift键不放 选种第一行的多选框,再选第六行,一次性把第一至第六行的多选框都选种。Top
8 楼cosmograd(cosmograd)回复于 2005-08-02 15:00:54 得分 100
很无聊,就写了一个。
按住Shift,反向选择是取消,正向选择是选中。支持Ctrl键的连选
<html>
<body onload="initObjects()">
<form>
<TABLE>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">111111</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">222222</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">333333</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">444444</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">555555</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">666666</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">777777</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">888888</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">999999</TD>
</TR>
</TABLE>
</form>
<script>
var selectedIndex = -1;
var tmpSelectedIndex = -1;
var itemsStatus = [];
var alltr = [];
var allcheckbox = [];
function initObjects()
{
alltr = document.all.tags("tr");
var allinput = document.all.tags("input");
var checkboxLength = 0;
for (var i=0;i<allinput.length;i++)
{
if (allinput[i].type == "checkbox")
{
allcheckbox[checkboxLength] = allinput[i];
itemsStatus[i] = "0";
checkboxLength ++;
}
}
}
function checkSelect(obj){
var objIndex = -1;
for (var i=0;i<alltr.length;i++)
{
if (obj == alltr[i])
{
objIndex = i;
break;
}
}
if (window.event.shiftKey)
{
if (selectedIndex == -1)
{
selectItem(objIndex);
selectedIndex = objIndex;
}else
{
selectItem(selectedIndex,objIndex)
}
}else if (window.event.ctrlKey)
{
selectItem(objIndex);
selectedIndex = objIndex;
}else
{
selectItem(objIndex);
clearAllOtherSelected(objIndex);
selectedIndex = objIndex;
}
}
function selectItem(beginIdx,endIdx)
{
selectTr(beginIdx,endIdx);
selectCheckbox(beginIdx,endIdx);
}
function selectTr(beginIdx,endIdx)
{
var itemFlag = false;
if (endIdx != null)
{
if (beginIdx < endIdx)
{
itemFlag = true;
for (var i=beginIdx;i<=endIdx;i++)
{
setTr(i,itemFlag);
}
}else if (beginIdx > endIdx)
{
itemFlag = false;
for (var i=endIdx;i<=beginIdx;i++)
{
setTr(i,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setTr(beginIdx,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setTr(beginIdx,itemFlag);
}
}
function selectCheckbox(beginIdx,endIdx)
{
var itemFlag = false;
if (endIdx != null)
{
if (beginIdx < endIdx)
{
itemFlag = true;
for (var i=beginIdx;i<=endIdx;i++)
{
setCheckbox(i,itemFlag);
setItemSatus(i,itemFlag);
}
}else if (beginIdx > endIdx)
{
itemFlag = false;
for (var i=endIdx;i<=beginIdx;i++)
{
setCheckbox(i,itemFlag);
setItemSatus(i,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setCheckbox(beginIdx,itemFlag);
setItemSatus(beginIdx,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setCheckbox(beginIdx,itemFlag);
setItemSatus(beginIdx,itemFlag);
}
}
function isItemNotSelected(idx)
{
if (itemsStatus[idx] == null || itemsStatus[idx] == "0")
return true;
else
return false;
}
function setCheckbox(idx,selectFlag)
{
allcheckbox[idx].checked = selectFlag;
}
function setTr(idx,selectFlag)
{
if (selectFlag)
{
alltr[idx].style.backgroundColor = "#FFCC66";
}else
{
alltr[idx].style.backgroundColor = "#FFFFFF";
}
}
function setItemSatus(idx,selectFlag)
{
if (selectFlag)
{
itemsStatus[idx] = "1";
}else
{
itemsStatus[idx] = "0";
}
}
function clearAllSelected()
{
for (var i=0;i<itemsStatus.length;i++)
{
if (itemsStatus[i] == "1")
{
setTr(i,false);
setCheckbox(i,false);
setItemSatus(i,false);
}
}
}
function clearAllOtherSelected(idx)
{
for (var i=0;i<itemsStatus.length;i++)
{
if (idx != i && itemsStatus[i] == "1")
{
setTr(i,false);
setCheckbox(i,false);
setItemSatus(i,false);
}
}
}
</script>
</BODY>
</html>Top
相关问题
- 怎样按住CTRL或Shift键进行DBGRID对应的数据集的连选?
- 如何可以让数据窗口支持多选?如按住ctrl或shift键,多选数据窗口中的记录。
- 如何捕捉按住Ctrl的键盘消息!
- 关于键盘按住不放的问题
- 如何实现按住ctrl键选定多行数据?
- StringGrid控件如何才能实现按住CTRL键,多选?
- 在有网格的视图下,我先画了一个矩形,然后按照书上说的,按住SHIFT键拖动,就会复制一个矩形,但不能对齐网格,如何解决.
- 按住鼠标左键不放移动鼠标,这能触发什么事件?
- ***********为什么有的USE的单元,按住CTRL键跳到该单元去?******************
- 请教如何响应按住鼠标左键“不动”这样一个动作




