2

jQueryのドラッグアンドドロップに本当に問題があります。それでは、状況を少し説明させてください。

私が達成したいのは次のとおりです。タイムライン上のティアドロップの1つをドラッグすると、divからのIDとドロップされたアイテムからのIDが、ドロップの直後にデータベースに保存されます。

私はなんとかajaxでそれを行うことができました、ここにコードがあります:

$('#dropzone ul li').droppable({
  drop: function(event, ui) {
        var day = $(".confirmday").val();
        var $drag = $(ui.draggable),
        var $drop = $(this);

        var drag = $drag.attr('id');
        var drop = $drop.attr('id');

        console.log(drag);

        if(drag == 'drag1')
        {
            drag = 'Medicijnen';
            werkwoord = ' ingenomen om ';
        }
        else if(drag == 'drag2')
        {
            drag = 'Snack';
            werkwoord = ' gegeten om ';
        }
        else if(drag == 'drag3')
        {
            drag = 'Frisdrank';
            werkwoord = ' gedronken om ';
        }
        else if(drag == 'drag4')
        {
            drag = 'Thee';
            werkwoord = ' gedronken om ';
        }
        else if(drag == 'drag5')
        {
            drag = 'Koffie';
            werkwoord = ' gedronken om ';
        }
        else if(drag == 'drag6')
        {
            drag = 'Alcohol';
            werkwoord = ' gedronken om ';
        }

        $.post("ajax/save.php", { 
                drag: drag,
                drop: drop,
                userid: <?php echo $_SESSION['id']; ?>,
                day: day},
                function(data) 
                {
                });
        return false;
    },
});

しかし、そうすると、ドラッグされたアイテム(またはそのアイテムのクローン)が消えてしまいます。ページが更新されないため、理由はわかりません。新しいアイテムは保存されません。

私が試したもう1つのオプションは、ドラッグされたアイテムのIDとドロップされたアイテムIDをテキストボックスに入力し、何かがドロップされるたびにそれを保存することでした。しかし、それもうまくいきません。

誰かが私を助けてくれることを本当に願っています!前もって感謝します。

ここに画像の説明を入力してください

4

1 に答える 1

3

コールバックハンドラーfalseの最後に戻ってきます。drop

これにより、ドラッグ可能が無効であることがドロップ可能に通知され、その後破棄されます。return完全に削除すると、機能するはずです。

私はあなたのコードを最適化するために自由を取りました、私はあなたが気にしないことを望みます;)

$('#dropzone ul li').droppable({
    drop: function(event, ui) {
        var day = $(".confirmday").val(),
            drag, werkwoord;

        switch (ui.draggable[0].id) {
            case "drag1":
                drag = 'Medicijnen';
                werkwoord = ' ingenomen om ';
            break;

            case "drag2":
                drag = 'Snack';
                werkwoord = ' gegeten om ';
            break;

            case "drag3":
                drag = 'Frisdrank';
                werkwoord = ' gedronken om ';
            break;

            case "drag4":
                drag = 'Thee';
                werkwoord = ' gedronken om ';
            break;

            case "drag5":
                drag = 'Koffie';
                werkwoord = ' gedronken om ';
            break;

            case "drag6":
                drag = 'Alcohol';
                werkwoord = ' gedronken om ';
            break;

            default:
                return false;
            break;
        }

        $.post("ajax/save.php",
            { 
                drag: ui.draggable[0].id,
                drop: this.id,
                userid: <?php echo $_SESSION['id']; ?>,
                day: day
            },
            function(data){}
        );
    },
});
于 2011-05-20T08:47:57.767 に答える