php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.01.2012, 11:46  
Erfahrener Benutzer
 
Registriert seit: 24.11.2010
Beiträge: 104
PHP-Kenntnisse:
Anfänger
Chacky befindet sich auf einem aufstrebenden Ast
Standard drag und drop maus springt

Hallo,

ich habe einen Script vorliegen, welcher es erlaubt Bereiche zu verschieben und dessen X, Y Werte zu übertragen.

Funktioniert alles auch soweit, jedoch springt die Maus beim auswählen eines Elements immer in die obere Linke Ecke, so dass es unschöne verschiebungen gibt.

Mein Ziel ist es, dass die Maus dort bleibt wo der Bereich angeklickt wird.

Für Hilfe wäre ich sehr dankbar.

Dazu der Code:

Code:
<script>
var selectedElement;

function findDraggableElement (target) {
  if (document.layers) {
    if (target.constructor == Document) {
      for (var l = 0; l < document.layers.length; l++)
        if (target == document.layers[l].document) 
          return document.layers[l];
    }
    else if (target.constructor == Image) {
      for (var l = 0; l < document.layers.length; l++)
        for (var i = 0; i < document.layers[l].document.images.length; i++)
          if (target == document.layers[l].document.images[i])
            return document.layers[l];
    }
    return null;
  }
  else if (document.all) {
    do 
      if (target.className == 'draggableElement')
        return target;
    while ((target = target.parentElement));
    return null;
  }
  else if (document.getElementById) {
    do
      if (target.className == 'draggableElement')
        return target;
    while ((target = target.parentNode));
    return null;
  }
}

function checkSelection (evt) {
   if (document.layers) {
     selectedElement = findDraggableElement (evt.target);
     if (selectedElement) {
       document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
       document.onmousemove = drag;
       document.onmouseup = stopDrag;
     }
   }
   else if (document.all) {
     selectedElement = findDraggableElement (event.srcElement);
     if (selectedElement) {
       document.onmousemove = drag;
       document.onmouseup = stopDrag;
     }
   }
   else if (document.getElementById) {
     selectedElement = findDraggableElement (evt.target);
     if (selectedElement) {
       document.onmousemove = drag;
       document.onmouseup = stopDrag;
     }
   }
}

function drag (evt) {
  if (document.layers) {
    selectedElement.left = evt.pageX;
    selectedElement.top = evt.pageY;
  }
  else if (document.all) {
    selectedElement.style.posLeft = event.clientX;
    selectedElement.style.posTop = event.clientY;
  }
  else if (document.getElementById) {
    selectedElement.style.left = evt.clientX + 'px';
    selectedElement.style.top = evt.clientY + 'px';
  }
}

function stopDrag (evt) {
    if (!evt) evt = event;
	document.forms["imageForm"].elements["layerid"+selectedElement.id].value = selectedElement.id;
    document.forms["imageForm"].elements["coordsx"+selectedElement.id].value = evt.clientX;
	document.forms["imageForm"].elements["coordsy"+selectedElement.id].value = evt.clientY;

    if (document.layers) {
        document.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP);
        document.onmousemove = null;
        document.onmouseup = null;
        selectedElement = null;
    } else if (document.all || document.getElementById) {
        document.onmousemove = null;
        document.onmouseup = null;
        selectedElement = null;
    }
}

if (document.layers)
  document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = checkSelection;

if (document.all)
  document.onselectstart = document.ondragstart = function () {
    return false;
  };
</script>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>

<div class="editor">

<form action="output.php" method="post" name="imageForm">
	<input type="hidden" name="layeridd1">
    <input type="hidden" name="coordsxd1" />
	<input type="hidden" name="coordsyd1" />
	<input type="hidden" name="layeridd2">
    <input type="hidden" name="coordsxd2" />
	<input type="hidden" name="coordsyd2" />
	<input type="hidden" name="layeridd3">
    <input type="hidden" name="coordsxd3" />
	<input type="hidden" name="coordsyd3" />
    <div style="position:absolute;z-index:1;margin-left:760px;"><input type="submit" value="Sende Bild" /></div>
</form>
Chacky ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.01.2012, 11:48  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

...und warum nicht gleich so: http://jqueryui.com/demos/draggable/ ?

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 03.01.2012, 11:51  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wird vermutlich mit location.reload zu tun haben.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 03.01.2012, 11:58  
Erfahrener Benutzer
 
Registriert seit: 24.11.2010
Beiträge: 104
PHP-Kenntnisse:
Anfänger
Chacky befindet sich auf einem aufstrebenden Ast
Standard

Ich habe leider keine Ahnung wie ich die Koordinaten bei jquerui entnehmen und über geben kann..

Zitat:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Draggable - Default functionality</title>
<link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
<script src="../../jquery-1.6.2.js"></script>
<script src="../../ui/jquery.ui.core.js"></script>
<script src="../../ui/jquery.ui.widget.js"></script>
<script src="../../ui/jquery.ui.mouse.js"></script>
<script src="../../ui/jquery.ui.draggable.js"></script>
<link rel="stylesheet" href="../demos.css">
<style>
#draggable { width: 150px; height: 150px; padding: 0.5em; }
</style>
<script>
$(function() {
$( "#draggable" ).draggable();
});
</script>
</head>
<body>

<div class="demo">

<div id="draggable" class="ui-widget-content">
<p>Drag me around</p>
</div>

</div>
Chacky ist offline   Mit Zitat antworten
Alt 03.01.2012, 12:02  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Zitat:
All callbacks (start, stop, drag) receive two arguments: The original browser event and a prepared ui object, view below for a documentation of this object (if you name your second argument 'ui'):

ui.helper - the jQuery object representing the helper that's being dragged
ui.position - current position of the helper as { top, left } object, relative to the offset element
ui.offset - current absolute position of the helper as { top, left } object, relative to page
...steht doch alles da.

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 03.01.2012, 12:52  
Erfahrener Benutzer
 
Registriert seit: 24.11.2010
Beiträge: 104
PHP-Kenntnisse:
Anfänger
Chacky befindet sich auf einem aufstrebenden Ast
Standard

Danke Wolf29,

aufjedenfall werden mir die variablen nun in einer Alert Box angezeigt, wie kann ich diese denn nun an Php übergeben ? :/ Leider bekomm ich das mit der Doku dazu nicht ganz hin.

Code:
 <style>
#makeMeDraggable { width: 300px; height: 300px; background: white;border:1px black solid; }
</style>


<script type="text/javascript">

$( init );

function init() {
  $('#makeMeDraggable').draggable( {
    cursor: 'move',
    containment: 'document',
    stop: handleDragStop
  } );
}

function handleDragStop( event, ui ) {
  var offsetXPos = parseInt( ui.offset.left );
  var offsetYPos = parseInt( ui.offset.top );
  alert( "Drag stopped!\n\nOffset: (" + offsetXPos + ", " + offsetYPos + ")\n");
}


</script>

</head>
<body>



<div id="content">
  <div id="makeMeDraggable"> </div>

</div>
Chacky ist offline   Mit Zitat antworten
Alt 03.01.2012, 12:53  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

http://www.lmgtfy.com/?q=php+jquery+...%C3%BCbergeben + check die Beschreibung bei JQuery mal genauer.

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 03.01.2012, 14:14  
Erfahrener Benutzer
 
Registriert seit: 24.11.2010
Beiträge: 104
PHP-Kenntnisse:
Anfänger
Chacky befindet sich auf einem aufstrebenden Ast
Standard

ich versuche jetzt die variablen zu übergeben, aber der Link erscheint nicht.... erkennt jemand vielleicht den Fehler ?

Code:
<script type="text/javascript">

$( init );

function init() {
  $('#makeMeDraggable').draggable( {
    cursor: 'move',
    containment: 'document',
    stop: handleDragStop
  } );
}

function handleDragStop( event, ui ) {
  var offsetXPos = parseInt( ui.offset.left );
  var offsetYPos = parseInt( ui.offset.top );
  alert( " " + offsetXPos + "," + offsetYPos + "\n");


}
</script>



</head>
<body>
<div id="content">
  <div id="makeMeDraggable">

<script type="text/javascript"> 
<!--
      
     
      var link = '<a href="/auswertung.php?offsetXPos='
                 + offsetXPos + '&offsetYPos='
                 + offsetYPos + '">Eintragen...</a>'
      document.write(link);
-->  
</script>
Chacky ist offline   Mit Zitat antworten
Alt 03.01.2012, 19:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Die Fehler-Konsole sagt Dir mehr. Woher soll bspw. offsetYPos kommen?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Drag and Drop zorro69 JavaScript, Ajax und mehr 6 21.12.2011 18:08
JQuery drag n drop EG2011 JavaScript, Ajax und mehr 2 01.06.2011 23:37
[Erledigt] JQuery Drag &amp; Drop an Flashanimationen Dopar JavaScript, Ajax und mehr 7 26.03.2011 11:22
Drag and Drop - Frage makaay04 JavaScript, Ajax und mehr 11 08.03.2011 18:50
Drag & Drop PHP und, oder HTML Editor gesucht stemser PHP Einsteiger 1 09.01.2011 16:22
Scriptsuche Slide-Fade Toogle mit Drag and Drop + Cookie Script gesucht GN Scriptbörse 1 09.01.2010 00:05
Drag and Drop Volex JavaScript, Ajax und mehr 7 02.01.2010 20:37
[Erledigt] Drag &amp; Drop Koordinaten übergeben HaWa-Services JavaScript, Ajax und mehr 4 13.11.2009 00:18
Drag and Drop SteiniKeule Scriptbörse 5 14.08.2009 14:51
Drag and Drop mit PHP und MySQL Torsten.E PHP Tipps 2009 16 08.07.2009 17:16
Drag and drop asdasd Scriptbörse 3 18.05.2009 18:52
Drag & Drop Begrenzung Maaax JavaScript, Ajax und mehr 8 10.05.2009 17:13
Drag & Drop via JQuery & Ajax --> Geht nicht :( Plague JavaScript, Ajax und mehr 2 23.10.2008 12:19
JavaScript Drag & Drop lomtas HTML, Usability und Barrierefreiheit 0 17.04.2006 22:15
[Erledigt] Drag &amp;amp;amp; Drop Bilder HTML, Usability und Barrierefreiheit 4 16.05.2005 22:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jquery draggable layer, javascript drag layer with cursor:move, jquery draggable springt, beim markieren springt die maus

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum