preventDefault和$event用法和demo

前言

通过写preventDefault()的demo引出preventDefault的用法和$event的理解

一、preventDefault()停止默认动作介绍

例如:提交表单,希望验证不通过时,表单不提交。此时需要submit按钮不进行下一步动作,会有一个默认停止动作preventDefault

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns:v-bind="http://www.w3.org/1999/xhtml"
      xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        输入想打开的网址: </br>
        判断规则:         </br>
        1.必须以'http://'开头 </br>
        2.不能是空字符串   </br>

        <input v-model="url" placeholder="必须以'http://'开头,否则不会跳转"> </br>
        <a v-bind:href="this.url" v-on:click="validate($event)">点我确定</a>

    </div>
    <script>
        var app  = new Vue({
            el:"#app",
            data:{
                url:''
            },
            methods:{
                validate:function (event) {
                    if (this.url.length == 0 || this.url.indexOf("http://") !=0){

                        alert("输入不符合规则")
                        if (event){
                            event.preventDefault()
                        }

                    }
                }
            }
        })

    </script>

</body>
</html>

二、$event的理解

$event是指当前触发的是什么事件(鼠标事件,键盘事件等) $event.target则指的是事件触发的目标,即哪一个元素触发了事件,这将直接获取该dom元素

这个demo中,$event代表的是鼠标点击事件

参考:https://www.jianshu.com/p/3f2c664e43d8

总结

记录下学习轨迹~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于 Element UI Tree 的限制只能在同级上移下移的示例代码: ```html <template> <el-tree :data="treeData" :default-expanded-keys="defaultExpandedKeys" :props="treeProps" @node-drop="handleNodeDrop" /> </template> <script> export default { data() { return { treeData: [ { id: 1, label: 'Node 1', children: [ { id: 2, label: 'Node 1-1', }, { id: 3, label: 'Node 1-2', }, ], }, { id: 4, label: 'Node 2', children: [ { id: 5, label: 'Node 2-1', }, { id: 6, label: 'Node 2-2', }, ], }, ], defaultExpandedKeys: [1, 4], treeProps: { label: 'label', children: 'children', }, }; }, methods: { handleNodeDrop(event) { const { node, dropNode, dropType } = event; // 确保仅同级节点可以上移或下移 if (node.parent !== dropNode.parent) { event.preventDefault(); return; } // 处理上移 if (dropType === 'before') { const dropNodeIndex = node.parent.children.indexOf(dropNode); const nodeIndex = node.parent.children.indexOf(node); if (nodeIndex < dropNodeIndex) { this.moveNode(node, dropNodeIndex - 1); } else { this.moveNode(node, dropNodeIndex); } } // 处理下移 if (dropType === 'after') { const dropNodeIndex = node.parent.children.indexOf(dropNode); const nodeIndex = node.parent.children.indexOf(node); if (nodeIndex < dropNodeIndex) { this.moveNode(node, dropNodeIndex); } else { this.moveNode(node, dropNodeIndex + 1); } } }, moveNode(node, index) { node.parent.children.splice(node.parent.children.indexOf(node), 1); node.parent.children.splice(index, 0, node); }, }, }; </script> ``` 在上面的示例代码中,我们使用了 `@node-drop` 事件来监听拖拽事件,并在方法 `handleNodeDrop` 中对节点的拖拽行为进行限制。具体来说,我们在 `handleNodeDrop` 方法中添加了以下逻辑: 1. 确保仅同级节点可以上移或下移。 2. 处理上移:根据拖拽节点的位置和目标节点的位置,计算出要移动的节点的新位置,然后调用 `moveNode` 方法移动节点。 3. 处理下移:根据拖拽节点的位置和目标节点的位置,计算出要移动的节点的新位置,然后调用 `moveNode` 方法移动节点。 在 `moveNode` 方法中,我们使用 `splice` 方法来移动节点,并且使用 `indexOf` 方法来获取节点在其父节点的子节点列表中的位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值