dtree添加一个支持shift键的功能 大哥,我是做java的,js不是很熟,能帮忙做一个吗??谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 box1box2box3box4box5box6先问客户以下个问题,他能很清楚的回答的话,再问其它人,如果其它人的想法跟他的想法一致,那你就按他说的做。否则,就告诉客户,这样的需求会让更多人迷惑。问题1:先点3,再点1,再点shift+5,那么应该选哪些?问题2:先点3,再点1,再在其它地方点了一下,再点shift+5,那么应该选哪些?问题3:先点3,再点1,再点3(取消3),再点shift+5,那么应该选哪些?问题4:先点12345,再点3(取消3),再点shift+5(取消5),那么应该选哪些(是不是要取消一些)?问题5:先点1,再点1(取消1),再点shift+5,该怎么做?同名的checkbox,要做到shift的功能应该并不难,只是逻辑不容易理解。----我想,这或许就是checkbox没有supportShiftKey或类似属性的原因吧 恩,楼上大哥说的这些我也考虑过,但是人家客户根本不管。只要能让他看到shift实现就行。比如问题1,那就选中3以下的结点就行。他们操作的时候,不会像楼上说的那样操作的,就是点一个,然后shift再点下一个,只要别出太大差错就可以了。谢谢楼上的。 如果你现在就做,并且只支持shift的十分之一的功能(就是他所说的那一点),那剩下的十分之九的功能,最后会以“客户抱怨”的形式让你们完成。他可以不管那么多,因为他只代表一个用户,你得想多点,因为你们是专家,得跟他讲清楚写明白(在合同里写上):这一点就算了(不用多收钱),但是以后不得提的跟这有关的抱怨。<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>JK:支持民族工业,尽量少买X货</title></head><body onclick="shiftForSelectFun()"><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ></body></html><script>function shiftForSelectFun(){ if(!event) return ; if(!event.shiftKey) return; var eventSrcElement=event.srcElement; if(eventSrcElement && eventSrcElement.tagName=="INPUT" && eventSrcElement.type=="checkbox") { if(eventSrcElement.checked){ var allCheckboxes=document.getElementsByName(eventSrcElement.name); var fromNum=0; var toNum=10000000; for(var i=0;i<allCheckboxes.length;i++){ if(allCheckboxes[i]==eventSrcElement){ toNum=i; break; } if(allCheckboxes[i].checked) fromNum=i; } for(var i=fromNum+1;i<toNum;i++){ allCheckboxes[i].checked=true; } } else{ // to be extended } }}</script> 以上代码有错误,更正如下:var fromNum=0;var toNum=10000000;--->>>var fromNum=10000000;var toNum=0; 哦,楼上的大哥,非常感谢您的帮助。但是这个是在dtree里面实现的。<div><img><a><input></input>结点名字</a></div>然后结点的位置都不太确定。您用过dtree吗,最重要的在结点间移动。我不知道该怎么判断。 把代码改了一下,加了些功能。代码已收集到:http://jkisjk.spaces.live.com/blog/cns!758CACE25E89DD3B!462.entry-------<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>JK:支持民族工业,尽量少买X货</title></head><body onclick="shiftForCheckBoxFun()">支持shift的checkbox:<br>注1:原始需求来自:http://community.csdn.net/Expert/topic/5124/5124061.xml?temp=.5592005<br><br><hr><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ><input type=checkbox name=aaa ></body></html><script>var previousCheckBoxForShift="";function shiftForCheckBoxFun(){ if(!event ) return ; var eventSrcElement=event.srcElement; if(eventSrcElement && eventSrcElement.tagName=="INPUT" && eventSrcElement.type=="checkbox") { if(!event.shiftKey || eventSrcElement.name!=previousCheckBoxForShift.name) { previousCheckBoxForShift=eventSrcElement; return; } if(eventSrcElement.checked==previousCheckBoxForShift.checked && eventSrcElement.name==previousCheckBoxForShift.name)//the 2nd condition can be changed. { var allCheckboxes=document.getElementsByName(eventSrcElement.name); //the sentence can be changed. var fromNum=1000000; var toNum=-1; for(var i=0;i<allCheckboxes.length;i++){ if(allCheckboxes[i]==eventSrcElement) { toNum=i; } if(allCheckboxes[i]==previousCheckBoxForShift) { fromNum=i; } if(fromNum!=1000000 && toNum!=-1) break; } if(fromNum!=1000000 && fromNum>toNum){ var temp=toNum; toNum=fromNum; fromNum=temp; } for(var i=fromNum+1;i<toNum;i++){ allCheckboxes[i].checked=eventSrcElement.checked; } } else{ previousCheckBoxForShift="";//to clear shift-from } } previousCheckBoxForShift=eventSrcElement;}</script> if(eventSrcElement.checked==previousCheckBoxForShift.checked && eventSrcElement.name==previousCheckBoxForShift.name)这句再改一下,加上&& window.event.shiftKey就可以满足我的需求了,谢谢。 jquery 脚本 这段代码是什么意思呢? 再次遇到小问题,求助散分啦~~ 一个图片切换问题,大虾们帮忙看下! 请问怎样用JavaScript获得img的宽和高 javascript 操作 div <h3>标记 如何得到和改变父框架的属性 分享刚写的一个仿Fixed的js 请教一个textbox的小问题,急,大家帮忙啊~!~~~ 拖动和单击,双击怎么区分开来亚 急!急!急!大家快来回答这个问题...... 为什么我一登录后,页面的位置全变了 get radio value problem
box2
box3
box4
box5
box6先问客户以下个问题,他能很清楚的回答的话,
再问其它人,如果其它人的想法跟他的想法一致,那你就按他说的做。
否则,就告诉客户,这样的需求会让更多人迷惑。
问题1:先点3,再点1,再点shift+5,那么应该选哪些?
问题2:先点3,再点1,再在其它地方点了一下,再点shift+5,那么应该选哪些?
问题3:先点3,再点1,再点3(取消3),再点shift+5,那么应该选哪些?
问题4:先点12345,再点3(取消3),再点shift+5(取消5),那么应该选哪些(是不是要取消一些)?
问题5:先点1,再点1(取消1),再点shift+5,该怎么做?同名的checkbox,要做到shift的功能应该并不难,只是逻辑不容易理解。----我想,这或许就是checkbox没有supportShiftKey或类似属性的原因吧
只要能让他看到shift实现就行。比如问题1,那就选中3以下的结点就行。他们操作的时候,不会像楼上说的那样操作的,就是点一个,然后shift再点下一个,只要别出太大差错就可以了。
谢谢楼上的。
那剩下的十分之九的功能,最后会以“客户抱怨”的形式让你们完成。他可以不管那么多,因为他只代表一个用户,
你得想多点,因为你们是专家,得跟他讲清楚写明白(在合同里写上):
这一点就算了(不用多收钱),
但是以后不得提的跟这有关的抱怨。<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JK:支持民族工业,尽量少买X货</title></head><body onclick="shiftForSelectFun()"><input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa ></body></html>
<script>
function shiftForSelectFun()
{
if(!event) return ;
if(!event.shiftKey) return;
var eventSrcElement=event.srcElement;
if(eventSrcElement && eventSrcElement.tagName=="INPUT" && eventSrcElement.type=="checkbox") {
if(eventSrcElement.checked){
var allCheckboxes=document.getElementsByName(eventSrcElement.name);
var fromNum=0;
var toNum=10000000;
for(var i=0;i<allCheckboxes.length;i++){
if(allCheckboxes[i]==eventSrcElement){
toNum=i;
break;
}
if(allCheckboxes[i].checked) fromNum=i;
}
for(var i=fromNum+1;i<toNum;i++){
allCheckboxes[i].checked=true;
}
}
else{
// to be extended
}
}
}</script>
var fromNum=0;
var toNum=10000000;--->>>var fromNum=10000000;
var toNum=0;
但是这个是在dtree里面实现的。
<div><img>
<a>
<input></input>结点名字
</a>
</div>然后结点的位置都不太确定。您用过dtree吗,最重要的在结点间移动。我不知道该怎么判断。
代码已收集到:http://jkisjk.spaces.live.com/blog/cns!758CACE25E89DD3B!462.entry
-------
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JK:支持民族工业,尽量少买X货</title></head><body onclick="shiftForCheckBoxFun()">
支持shift的checkbox:<br>注1:原始需求来自:http://community.csdn.net/Expert/topic/5124/5124061.xml?temp=.5592005<br><br>
<hr><input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa >
<input type=checkbox name=aaa ></body></html>
<script>
var previousCheckBoxForShift="";
function shiftForCheckBoxFun()
{
if(!event ) return ;
var eventSrcElement=event.srcElement;
if(eventSrcElement && eventSrcElement.tagName=="INPUT" && eventSrcElement.type=="checkbox") {
if(!event.shiftKey || eventSrcElement.name!=previousCheckBoxForShift.name) {
previousCheckBoxForShift=eventSrcElement;
return;
}
if(eventSrcElement.checked==previousCheckBoxForShift.checked && eventSrcElement.name==previousCheckBoxForShift.name)//the 2nd condition can be changed.
{
var allCheckboxes=document.getElementsByName(eventSrcElement.name); //the sentence can be changed.
var fromNum=1000000;
var toNum=-1;
for(var i=0;i<allCheckboxes.length;i++){
if(allCheckboxes[i]==eventSrcElement)
{
toNum=i;
}
if(allCheckboxes[i]==previousCheckBoxForShift)
{
fromNum=i;
}
if(fromNum!=1000000 && toNum!=-1) break;
}
if(fromNum!=1000000 && fromNum>toNum){
var temp=toNum;
toNum=fromNum;
fromNum=temp;
}
for(var i=fromNum+1;i<toNum;i++){
allCheckboxes[i].checked=eventSrcElement.checked;
}
}
else{
previousCheckBoxForShift="";//to clear shift-from
}
}
previousCheckBoxForShift=eventSrcElement;
}</script>
加上&& window.event.shiftKey
就可以满足我的需求了,谢谢。