在线等,怎么解决不选择文字拖动控件? 一个拖动非常好的例子http://www.walterzorn.com/dragdrop/dragdrop_e.htm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 搞一个onmouseover="this.select()"onmouseout="this.unselect()" textbox支持this.select()但不支持this.unselect(),而label两个都不支持的! 对拖动控件这一块我不行,现在作的是NET中的控件拖动,但更麻烦而且客户端要有NET框架的支持所以改为JAVASCRIPT,但现在遇到上面的问题,老板说要选中才能拖肯定不行,怎么办啊??快疯了,,老板逼我啊! <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title><script>function dragClass(obj,e){ var dragObj; function dragObj() { this.LEFT = null; this.TOP = null; this.WIDTH = null; this.HEIGHT = null; } if (e && obj) { dragObj = new dragObj(); dragObj.obj = obj; dragObj.LEFT = e.clientX-obj.style.pixelLeft; dragObj.TOP = e.clientY-obj.style.pixelTop; } if(document.addEventListener) { document.addEventListener("mousemove",moveHandler,true); document.addEventListener("mouseup",upHandler,true); } else if(document.attachEvent) { document.attachEvent("onmousemove",moveHandler); document.attachEvent("onmouseup",upHandler); obj.setCapture(); } if(event.stopPropagation) event.stopPropagation(); else event.cancelBubble=true; if(event.preventDefault) event.preventDefault(); else event.returnValue=false; function moveHandler(e) { if (!e) e = window.event; if (dragObj) { var newx = e.x - dragObj.LEFT; var newy = e.y - dragObj.TOP dragObj.obj.style.left = newx; dragObj.obj.style.top = newy; } if (event.stopPropagation) event.stopPropagation(); else event.returnValue = "false"; } function upHandler(e) { if (!e) e = window.event; if (dragObj) { if (document.removeEventListener) { document.removeEventListener("mousemove",moveHandler,true); document.removeEventListener("mouseup",upHandler,true); } else { document.detachEvent("onmouseup",upHandler); document.detachEvent("onmousemove",moveHandler); obj.releaseCapture(); } } if (event.stopPropagation) event.stopPropagation(); else event.returnValue = "false"; }}</script></head><body><input type="text" id="userName"style="position:absolute"onmousedown="dragClass(this,event);this.focus();"></body></html>运行这个HMTL文件会发现只有把Label上的文字选中才可以拖动,只有在text中输入文字将文字选中才可以拖动!怎么解决??? 我觉得你可以试试DIV不一定非要用label /////////////////////////////////////////开始拖动///////////////////////////////////////TreeItem.prototype.startDrag=function(e){ if(!treeConfig.allowDrag) return; //var label=document.getElementById(this.id+"-text-anchor"); var label=e.srcElement; label.setCapture(); var tip=document.createElement("span"); tip.className=treeConfig.css_ItemDragTooltip; tip.innerText=this.Text; tip.style.left=e.clientX +document.body.scrollLeft +label.offsetWidth -e.offsetX; tip.style.top=e.clientY +document.body.scrollTop +label.offsetHeight -e.offsetY; document.body.appendChild(tip); this._startX=e.clientX; this._startY=e.clientY; this._dragTooltip=tip; } hbzyduwu:我现在把程序改如下 :(我要在设计的时候把绝对位置去掉,否则设计页面时会有很多问题如不能用TABLE)可是问题出现了第一次拖动时总是回到0.0坐标<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title><script>function dragClass(obj,e){ var dragObj; function dragObj() { this.LEFT = null; this.TOP = null; this.WIDTH = null; this.HEIGHT = null; } if (e && obj) { dragObj = new dragObj(); obj.style.position='absolute'; dragObj.obj = obj; dragObj.LEFT = e.clientX-obj.style.pixelLeft; dragObj.TOP = e.clientY-obj.style.pixelTop; } if(document.addEventListener) { document.addEventListener("mousemove",moveHandler,true); document.addEventListener("mouseup",upHandler,true); } else if(document.attachEvent) { document.attachEvent("onmousemove",moveHandler); document.attachEvent("onmouseup",upHandler); obj.setCapture(); } if(event.stopPropagation) event.stopPropagation(); else event.cancelBubble=true; if(event.preventDefault) event.preventDefault(); else event.returnValue=false; function moveHandler(e) { if (!e) e = window.event; if (dragObj) { var newx = e.x - dragObj.LEFT; var newy = e.y - dragObj.TOP dragObj.obj.style.left = newx; dragObj.obj.style.top = newy; //alert("x轴:"+newx); } if (event.stopPropagation) event.stopPropagation(); else event.returnValue = "false"; } function upHandler(e) { if (!e) e = window.event; if (dragObj) { if (document.removeEventListener) { document.removeEventListener("mousemove",moveHandler,true); document.removeEventListener("mouseup",upHandler,true); } else { document.detachEvent("onmouseup",upHandler); document.detachEvent("onmousemove",moveHandler); obj.releaseCapture(); } } if (event.stopPropagation) event.stopPropagation(); else event.returnValue = "false"; }}</script></head><body><label ID="lab" onmousedown="dragClass(this,event);this.focus();"></label><table width="96%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="34%"> </td> <td width="61%"><input type="text" id="userName" onMouseDown="dragClass(this,event);this.focus();"></td> <td width="5%"> </td> </tr> <tr> <td> </td> <td><label id="lab" onMouseDown="dragClass(this,event);this.focus();">fdfd</label></td> <td> </td> </tr></table></body></html> 用鼠标的onmousedown,onmousemove,onmouseup来代替拖动事件<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title><script>var xx=0,yy=0,state=0</script><script language="javascript">function setPos(objElement,intFlag){ if(intFlag==1) //OnDragStart { objElement.setCapture(); objElement.style.cursor='move'; xx=event.x-objElement.offsetLeft; yy=event.y-objElement.offsetTop; state=1; } else if(intFlag==2)//OnDrag { if(state==1) { objElement.style.position='absolute'; objElement.style.left=event.x-xx; objElement.style.top=event.y-yy; } } else if(intFlag==3)//OnDragEnd结束时取得坐标信息 { objElement.style.cursor='default'; objElement.releaseCapture(); state=0; }}</script></head><body><label ID="lab" onmousedown="setPos(this,1)" onmousemove="setPos(this,2)" onmouseup="setPos(this,3)">fdfd</label><input type="text" id="userName" onmousedown="setPos(this,1)" onmousemove="setPos(this,2)" onmouseup="setPos(this,3)"></body></html> ok,,现在真的OK了,多谢各位老大,,马上结帖 发现个问题,大家也遇到过吧 js中能获取变量的地址吗 JS控制菜单的伸缩出错,请帮忙。。。 一个javascript的基础问题,求明眼人帮忙解答下 实在想不通 请教这6行代码输出为什么是这样 省市区连动问题----高分请教 能不能在页面初始化时用JavaScript实现Button的disabled效果? 数组和求一个数的整除 请问两个小图片链接可以分别弹出新指定大小的窗口,为什么同样的JS在动态页面里就只会在同一弹出窗口里显示了? 如何获取浏览器中当前行的位置? 如何在JavaScript中取得Table中的值 请问有没有这样的控件
onmouseout="this.unselect()"
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script>
function dragClass(obj,e)
{
var dragObj;
function dragObj() {
this.LEFT = null;
this.TOP = null;
this.WIDTH = null;
this.HEIGHT = null;
}
if (e && obj) {
dragObj = new dragObj();
dragObj.obj = obj;
dragObj.LEFT = e.clientX-obj.style.pixelLeft;
dragObj.TOP = e.clientY-obj.style.pixelTop;
}
if(document.addEventListener) {
document.addEventListener("mousemove",moveHandler,true);
document.addEventListener("mouseup",upHandler,true);
}
else if(document.attachEvent) {
document.attachEvent("onmousemove",moveHandler);
document.attachEvent("onmouseup",upHandler);
obj.setCapture();
}
if(event.stopPropagation) event.stopPropagation();
else event.cancelBubble=true;
if(event.preventDefault) event.preventDefault();
else event.returnValue=false;
function moveHandler(e) {
if (!e) e = window.event;
if (dragObj) {
var newx = e.x - dragObj.LEFT;
var newy = e.y - dragObj.TOP
dragObj.obj.style.left = newx;
dragObj.obj.style.top = newy;
}
if (event.stopPropagation) event.stopPropagation();
else event.returnValue = "false";
}
function upHandler(e) {
if (!e) e = window.event;
if (dragObj) {
if (document.removeEventListener) {
document.removeEventListener("mousemove",moveHandler,true);
document.removeEventListener("mouseup",upHandler,true);
}
else {
document.detachEvent("onmouseup",upHandler);
document.detachEvent("onmousemove",moveHandler);
obj.releaseCapture();
}
}
if (event.stopPropagation) event.stopPropagation();
else event.returnValue = "false";
}
}
</script>
</head>
<body>
<input type="text" id="userName"
style="position:absolute"
onmousedown="dragClass(this,event);this.focus();">
</body>
</html>
运行这个HMTL文件会发现只有把Label上的文字选中才可以拖动,只有在text中输入文字将文字选中才可以拖动!怎么解决???
//开始拖动///////////////////////////////////////
TreeItem.prototype.startDrag=function(e){
if(!treeConfig.allowDrag) return;
//var label=document.getElementById(this.id+"-text-anchor");
var label=e.srcElement;
label.setCapture();
var tip=document.createElement("span");
tip.className=treeConfig.css_ItemDragTooltip;
tip.innerText=this.Text;
tip.style.left=e.clientX +document.body.scrollLeft +label.offsetWidth -e.offsetX;
tip.style.top=e.clientY +document.body.scrollTop +label.offsetHeight -e.offsetY;
document.body.appendChild(tip);
this._startX=e.clientX;
this._startY=e.clientY;
this._dragTooltip=tip;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script>
function dragClass(obj,e)
{
var dragObj;
function dragObj() {
this.LEFT = null;
this.TOP = null;
this.WIDTH = null;
this.HEIGHT = null;
}
if (e && obj) {
dragObj = new dragObj();
obj.style.position='absolute';
dragObj.obj = obj;
dragObj.LEFT = e.clientX-obj.style.pixelLeft;
dragObj.TOP = e.clientY-obj.style.pixelTop;
}
if(document.addEventListener) {
document.addEventListener("mousemove",moveHandler,true);
document.addEventListener("mouseup",upHandler,true);
}
else if(document.attachEvent) {
document.attachEvent("onmousemove",moveHandler);
document.attachEvent("onmouseup",upHandler);
obj.setCapture();
}
if(event.stopPropagation) event.stopPropagation();
else event.cancelBubble=true;
if(event.preventDefault) event.preventDefault();
else event.returnValue=false;
function moveHandler(e) {
if (!e) e = window.event;
if (dragObj) {
var newx = e.x - dragObj.LEFT;
var newy = e.y - dragObj.TOP
dragObj.obj.style.left = newx;
dragObj.obj.style.top = newy;
//alert("x轴:"+newx);
}
if (event.stopPropagation) event.stopPropagation();
else event.returnValue = "false";
}
function upHandler(e) {
if (!e) e = window.event;
if (dragObj) {
if (document.removeEventListener) {
document.removeEventListener("mousemove",moveHandler,true);
document.removeEventListener("mouseup",upHandler,true);
}
else {
document.detachEvent("onmouseup",upHandler);
document.detachEvent("onmousemove",moveHandler);
obj.releaseCapture();
}
}
if (event.stopPropagation) event.stopPropagation();
else event.returnValue = "false";
}
}
</script>
</head>
<body>
<label ID="lab" onmousedown="dragClass(this,event);this.focus();"></label>
<table width="96%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="34%"> </td>
<td width="61%"><input type="text" id="userName" onMouseDown="dragClass(this,event);this.focus();"></td>
<td width="5%"> </td>
</tr>
<tr>
<td> </td>
<td><label id="lab" onMouseDown="dragClass(this,event);this.focus();">fdfd</label></td>
<td> </td>
</tr>
</table>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script>
var xx=0,yy=0,state=0
</script>
<script language="javascript">
function setPos(objElement,intFlag)
{
if(intFlag==1) //OnDragStart
{
objElement.setCapture();
objElement.style.cursor='move';
xx=event.x-objElement.offsetLeft;
yy=event.y-objElement.offsetTop;
state=1;
}
else if(intFlag==2)//OnDrag
{
if(state==1)
{
objElement.style.position='absolute';
objElement.style.left=event.x-xx;
objElement.style.top=event.y-yy;
}
}
else if(intFlag==3)//OnDragEnd结束时取得坐标信息
{
objElement.style.cursor='default';
objElement.releaseCapture();
state=0;
}
}
</script>
</head>
<body>
<label ID="lab" onmousedown="setPos(this,1)" onmousemove="setPos(this,2)" onmouseup="setPos(this,3)">fdfd</label>
<input type="text" id="userName" onmousedown="setPos(this,1)" onmousemove="setPos(this,2)" onmouseup="setPos(this,3)">
</body>
</html>