ugrás a tartalomhoz

onmousedown onmouseup

csman007 · 2012. Jún. 21. (Cs), 12.41
Sziasztok!
A következő lenne a problémám.
Egy "csúszkát" csinálok éppen.
A js kód:

function getBox(e){
    	    var x=0;
    	    var y=0;
    	    var p=e;
    	    while(p){
    	        x+=p.offsetLeft;
    	        y+=p.offsetTop;
    	        p=p.offsetParent;
    	    }
    	    p=e;
    	    while(p){
    	        if((p.scrollLeft||p.scrollTop)){
    	            x-=p.scrollLeft;
    	            y-=p.scrollTop;
    	        }
    	        p=p.parentNode;
    	    }
    	    
    	    
    	    return [x,y,x+e.offsetWidth, y+e.offsetHeight]
    	}
    	intervalButton={};

    	function intervalButtonDown(ev,e,name,side){
    	    ev=ev?e:window.event;
    	    intervalButton.e=e;
    	    intervalButton.name=document.getElementById(name);
    	    intervalButton.side=side;
    	    e.parentNode.onselectstart = function (){return false};
    	    e.parentNode.style.MozUserSelect="none";
    	    return false;
    	}
    	
    	function intervalButtonMove(t,e){
    	    if(!intervalButton.e){return};
    	    e=e?e:window.event;
    	    var b=getBox(intervalButton.e.parentNode)
    	   	var v=Math.round((e.clientX-b[0])/30)*5+30;
		   	v=Math.min(v,55);
		    intervalButton.e.style.left=((6*(v-30))-5)+"px";
    	    intervalButton.e.parentNode[intervalButton.side]=v;
    	    $('#einsparung').val(v-25);
    	}
    	function intervalButtonUp(t,e){
    	    intervalButton={};
    	}
a html kód pedig

<div class="intervalInput" onMouseMove="intervalButtonMove(this,event);" onMouseUp="intervalButtonUp(this,event);" >
   <div style="left: 55px;" onMouseDown="intervalButtonDown(event,this,'minV','min');"  class="intervalButton"></div>
</div>
Minden jól megy, csak néha olyat csinál, hogy lenyomom az egérgombot és nem áll meg az onmousemove ha nincs lenyomva az egér gombja, hanem csúszkál ahogy húzom az egeret, pedig nincs lenyomva az egérgomb.
 
1

Kikerül

Poetro · 2012. Jún. 21. (Cs), 12.55
Ez akkor lehet, ha az egér kikerül az intervalInput dobozából, ezért érdemes lenne a mouseup-ot és mousemove-ot a document-en vizsgálni.
2

Kikerül

csman007 · 2012. Jún. 21. (Cs), 13.28
Köszi, de még mindig nem stimmel valami.
Most így néz ki a js

var mouseDown = false;
document.onmousedown = function() {
    mouseDown = true;
}
document.onmouseup = function() {  
    mouseDown = false;
}

function intervalButtonMove(t,e){
    console.log(mouseDown);
    ...
}
Érdekes módon ha kikerül akkor is "beragad" néha és true marad, a következő clickre viszont "megáll"