2017-01-21 6 views
1

Ich benutze jQuery UI sortierbar und versuche einfach zu verhindern, ziehen, wenn die Bedingung wahr ist. Ich bin auf diese Lösung gestoßen: https://stackoverflow.com/a/18470982/3758078 Aber das bricht den Ziehvorgang ab, wenn der Ziehvorgang stoppt, nicht bevor es beginnt. Andere Lösungen empfehlen, return false; im sort: Ereignis zu verwenden, aber das gibt einfach einen Fehler zurück.Abbrechen ziehen, bevor es startet

$(elements).sortable({ 
     start: function() { 
      if(true) { 
       //cancel dragging before it begins 
      } 
     } 
    }); 
+0

Können Sie die "disable" -Methode verwenden, um zu verhindern, dass sie überhaupt startet? –

Antwort

2

Hier ist ein funktionierendes Beispiel mit dem Rückruf start.
Sie können die allowdrag Checkbox verwenden, um die schlepp Funktionalität zu aktivieren/deaktivieren:

$(document).ready(function() { 
 
    $("#draggable").draggable({ 
 
     revert: "invalid", 
 
     start: function(e) { 
 
     if (!$('#allowdrag').is(':checked')) { 
 
      e.preventDefault(); 
 
     } 
 
     } 
 
    }); 
 
    $("#Dropable").droppable({ 
 
     activeClass: "ui-state-highlight", 
 
     drop: function (event, ui) { 
 
      alert("dropped!"); 
 
     }, 
 
     tolerance: 'fit' 
 
    }); 
 
});
#draggable { 
 
    width: 150px; 
 
    height: 150px; 
 
    padding: 0.5em; 
 
} 
 
#Dropable { 
 
    height:300px; 
 
    width:400px; 
 
    border: 2px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.css"> 
 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js"></script> 
 
<input type="checkbox" id="allowdrag" /><label for="allowdrag"> Allow drag</label><br /> 
 
<div id="draggable" class="ui-widget-content"> 
 
    <p>Drag me around</p> 
 
</div> 
 
<div id="Dropable">Droppable area</div>

Sie können den if (!$('#allowdrag').is(':checked')) { Teil ändern, was Sie, um zu überprüfen, wollen die Drag-Option zu aktivieren/deaktivieren .

+0

Ich benutze sortierbar(); In diesem Beispiel wird ziehbar verwendet. Ich habe e.preventDefault innerhalb des Startereignisses verwendet und einen Konsolenfehler erhalten. – guub

+0

@guub sollte es genauso funktionieren. Hast du die Variable 'e' in die' function (e) {..} 'Definition eingefügt? – Dekel

+0

@guub hast du es überprüft? – Dekel

Verwandte Themen