mmofacts.com

Droppables OnDrop

gepostet vor 15 Jahre, 9 Monate von force4

Hallo, meine nächste Frage zu JS.

Ist es möglich, das Event "onDrop" von script.aculo.us' Droppables abzubrechen, sodass der Drop als "Fehlgeschlagen" interpretiert wird?

Ich habe vor, mittels confirm() auf eine Benutzerbestätigung zu warten, bevor der Drop tatsächlich akzeptiert wird. 

Hier der Sourcecode:

Droppables.add('dropbox', {
   accept: 'items',
   overlap: 'horizontal',
   hoverclass: 'drop_hover',
   onDrop:function(element){
     if (!confirm('Sicher, dass du dieses Item unwiederruflich entfernen willst?')) {
       return false;
     }
     var drop = $('dropbox');
     $('inventory_tooltip').update('Dropped the ' + element.alt + ' on me.');
   },
});

Mache ich vielleicht etwas falsch?

gepostet vor 15 Jahre, 9 Monate von force4

Huhu, 

ich habe mir jetzt damit abgeholfen:

if (!confirm('Sicher, dass du dieses Item unwiederruflich entfernen willst?' + icon_pos)) {
  new Effect.Move(element, {
    x: 0,
    y: 0,
    mode: 'absolute',
    duration: 0.2,
  });
  return false;
}

Hat jemand eine bessere Idee?

gepostet vor 15 Jahre, 9 Monate von buhrmi

Geht es dir nur um das "zurückbewegen" im falle eines abbruchs? Versuch mal mit

JavaScript:

new Draggable(item, {
    revert: 'failure',
    ....
}

gepostet vor 15 Jahre, 9 Monate von force4

Hallo,

danke, das habe ich schon. Es geht mir wirklich um den Abbruch des "Droppens".

gepostet vor 15 Jahre, 9 Monate von buhrmi

Achso, jetz verstehe ich glaube ich. du willst den rückgabewert 'false' von onDrop als "fehlgeschlagen" interpretiert haben. Hmm das geht glaub ich nicht. Der rückgabewert wird ignoriert. Du könntest höchstens den source modifizieren. Beim überfliegen sieht es für mich so aus als sei die relevante stelle in dragdrop.js:117+118

edit:

script.aculo.us dragdrop.js v1.8.1

gepostet vor 15 Jahre, 9 Monate von force4

Okay, danke, dass du nachgeschaut hast.

Ich bleibe dann erstmal bei meiner Lösung von oben, sie funktioniert ja. :)

gepostet vor 15 Jahre, 9 Monate von Fornax

Unter mootools sähe es in etwa so aus:

   onDrop:function(event){
if (!confirm('Sicher, dass du dieses Item unwiederruflich entfernen willst?')) {
event.stop();
return false;
}
var drop = $('dropbox'); // Was bringt diese Zeile?
$('inventory_tooltip').update('Dropped the ' + this.alt + ' on me.');
},

Auf diese Diskussion antworten