Javascript -- return false / true

本文讲解如何通过返回false阻止HTML元素如<a>和表单的默认行为,并解释了为何通常使用return与函数结合的方式来实现这一目的。
在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.
Return False 就相当于终止符,Return True 就相当于执行符。

然后你需要明白的是,比方说我们点击submit以后,他会首先处理我们自定义的方法,然后转而去执行默认方法,也就时提交订单。你应该把它想象成两个函数来实现的。默认方法我们都该不了,但是我们可以决定是否执行默认方法。上面的流程如下所示。

//onclick 在未对onclick设置自定义触发函数的形式
function onclick(){
	default();
}
//设置触发函数后的形式
<form type="submit" value="submit" onclick = "a()"
function onclick(){
	a();
	default();
}
这个时候,a()的返回不会对default()造成影响,它还会持续执行下去。但是如果这个时候你改为return a(),并且最后a()的值为false的话,default()就不会执行了。所以这个就是为啥你会经常看到"return a()",因为a()内不论有多少return false,它对onclick的默认函数都不会有影响。
<form action="index.jsp" method="post" onsubmit="submitTest();">
</form>
<script LANGUAGE="JavaScript">
<!--
    function submitTest(); {
        // 一些逻辑判断
     return false;
    }
</script>
这里面表单会正常提交的。要把submitTest与提交订单看成是两个函数来完成的。如果不想让他提交改为:

<form action="index.jsp" method="post" onsubmit="return submitTest();"> 




### 实现页面返回时的确认对话框 为了实现在Vue应用或小程序中当用户尝试离开页面时显示确认对话框的功能,可以采用不同的策略。 #### Vue 应用中的解决方案 在Vue项目里,利用`beforeRouteLeave`导航守卫能够拦截即将发生的路由变化,在这个过程中弹出确认对话框给用户提供选择的机会[^1]。下面是一个具体的例子: ```javascript export default { beforeRouteLeave(to, from, next) { const answer = window.confirm('Do you really want to leave? You have unsaved changes!'); if (answer) { next(); } else { next(false); } }, }; ``` 这段代码会在试图离开当前组件对应的视图之前触发,并询问用户是否真的要离开。只有当用户点击“确定”按钮时才会继续执行跳转操作;反之,则取消此次导航行为。 #### 小程序环境下的处理方案 对于微信小程序而言,可以在页面生命周期函数`onUnload()`或者`onBackPress()`中加入相应的逻辑来阻止默认的行为并展示自定义的消息提示框[^4]。具体来说就是在页面配置文件(`page.json`)设置`enablePullDownRefresh:false`防止下拉刷新干扰的同时监听物理按键事件: ```json { "usingComponents": {}, "disableScroll": true, "enablePullDownRefresh": false } ``` 接着是在`.js`文件里面添加如下代码片段: ```javascript Page({ onUnload() { wx.showModal({ title: '提示', content: '您正在退出该页面,未保存的数据将会丢失。', success(res) { if (!res.confirm) { // 用户点击了取消按钮,停留在本页 return; } // 用户点击了确定按钮,允许关闭页面 } }); }, onBackPress(options){ wx.showModal({ title: '提示', content: '您正在退出该页面,未保存的数据将会丢失。', showCancel:true, cancelText:'再看看', confirmText:'确定', success:function(res){ if(res.cancel){ return true;// 阻止本次返回操作 }else{ return false; // 继续之前的返回动作 } } }) } }) ``` 需要注意的是,由于微信官方API的设计原因,即使在这里实现了模态框提醒机制,也无法百分之百地控制住所有的场景,比如快速连按两次返回键可能会绕过此验证过程直接退回到上一层级界面。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值