【问题标题】:Stop/Cancel Primefaces dragging action pressing Esc key按 Esc 键停止/取消 Primefaces 拖动操作
【发布时间】:2020-08-28 08:43:49
【问题描述】:

我希望能够在拖动操作开始后停止/取消拖动操作,例如按 Esc 键。 我正在基于 Primefaces Showcase 示例工作。 https://www.primefaces.org/showcase/ui/dnd/dataTable.xhtml

<h:form id="carForm">
    <p:dataTable id="availableCars">
        <p:column>
            <h:outputText id="dragIcon" styleClass="ui-icon pi pi-plus"/>
            <p:draggable id="draggable" for="dragIcon" revert="true" helper="clone"/>
        </p:column>
    </p:dataTable>

    <p:outputPanel id="droppedArea">
        <!-- Here, there is a datatable where dragged rows are shown -->
        <p:dataTable id="selectedCars">
            ...
        </p:dataTable>
    </p:outputPanel>

    <p:droppable for="droppedArea" tolerance="touch" datasource="availableCars">
        <p:ajax listener="#{actionView.onDrop}" update="availableCars selectedCars" />
    </p:droppable>
</h:form>

在 keyup 事件中,我尝试了很多方法来恢复 drop 事件,甚至将事件发送到未丢弃的位置。我也尝试过修改 PrimeFaces.widget.Droppable.prototype.bindDropListener 函数。

<script type="text/javascript">
    //detect Escape key press
    document.addEventListener("keyup", function(event) {
        if(event.keyCode === 27){
            $('.ui-draggable:data(draggable)').draggable( 'option',  'revert', true ).trigger( 'mouseup' );
        }
    });
</script>

【问题讨论】:

    标签: jquery primefaces drag-and-drop jquery-ui-draggable primefaces-datatable


    【解决方案1】:

    所以这很棘手,我不得不自己使用它来修复 DataTable drop/drop 中的错误。您必须访问 Jquery 拖放管理器并取消所有事件。

    var dragdrop = $.ui.ddmanager.current;
    if (dragdrop) {
        document.body.style.cursor = 'default';
        dragdrop.cancel();
    }
    

    【讨论】:

    • 感谢您的回复。我以前试过。它会停止拖动操作,但会执行 ajax 侦听器 (actionView.onDrop) 并将新元素添加到列表中。不应执行 ajax 侦听器。
    • 啊,所以 AJAX PF 代码仍然被订阅和触发。嗯,这更棘手!
    • PrimeFaces.ajax.Queue.abortAll() 中止所有 PF AJAX 请求怎么样?
    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 2012-09-21
    • 2016-12-22
    • 1970-01-01
    • 2018-07-25
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多