zk文本框,不包含粘贴值

时间:2017-11-11 08:54:17

标签: textbox zk zul

如何创建阻止ZK复制和粘贴的文本框? zk-textbox中不允许剪切/复制/粘贴。

Ctrl + V 并处理鼠标右键,但拖放怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用javascript禁用某些组件的文本拖动。有几种方法可以将这些代码应用到组件中,他以下使用sclass作为标记,如果您只需要少量文本框,这非常方便:

<textbox value="Drag Me!" /> 
<textbox value="Can't drag me!" sclass="nodrag" /> 
<textbox placeholder="Can drop here..." /> 
<textbox placeholder="...but not here" sclass="nodrop" /> 

<script type="text/javascript">
    document.body.addEventListener("dragstart", function(e) {
        if (e.target.className.indexOf("nodrag") > -1) {
            e.preventDefault();
            return false;
        }                           
    }, false);
    document.body.addEventListener("dragover", function(e) {
        if (e.target.className.indexOf("nodrop") > -1) {
            e.preventDefault();
            e.dataTransfer.effectAllowed = "none";
            e.dataTransfer.dropEffect = "none";
            return false;
        }                           
    }, false);
</script>

您也可以通过zk.afterLoad:

来完成
zk.afterLoad('zul.inp', function() {
    var xTextbox = {};
    zk.override(zul.inp.Textbox.prototype, xTextbox , {
        bind_  : function() {
            this.$supers('bind_', arguments);
            if (this.$n().className.indexOf("nodrag") > -1) {
                this.domListen_(this.$n(), "onDragstart", function(event) {
                    event.stop();
                    return false;
                }); 
            }
            if (this.$n().className.indexOf("nodrop") > -1) {
                this.domListen_(this.$n(), "onDragover", function(event) {
                    event.stop();
                }); 
            }
        }
    });
});

这重点关注如何使用zk应用它,但实际上它只是简单的javascript。您可以在此处阅读以获取更多信息:disable text drag and drop