onclick返回值放在settimeout中不能中断submit

karying 2015-08-05 09:41:42
最近鼓弄个小程序,遇到这个一个问题,都要抓狂了,不知道如何解决
希望各大牛不吝赐教
以下是部分代码,form调用browserRedirect()函数,用来判断设备类型,如果是手机端,则根据某些条件判断Istrue是否false,如果false,则终止提交表单。

var Istrue=true;
function browserRedirect() {
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
document.writeln("您的浏览设备为:");
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
document.writeln("phone");
/*判断Istrue,用到延时600*/
} else {
document.writeln("pc");

}
setTimeout(function(){return Istrue;},1000);
}
...全文
232 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch126163 2015-08-06
  • 打赏
  • 举报
回复
不要使用 submit 按钮 用普通按钮,点击进行逻辑判断, 延时后,如果需要提交, form.submit() 来提交表单
豪情 2015-08-06
  • 打赏
  • 举报
回复
那就需要可能在打开一项服务里边做回调处理,不是手动的延时处理。

function service(fn){
    // todo
    fn();
}
service(function(){
    browserRedirect();
});
看看这样可以不
karying 2015-08-06
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
没看明白为什么要延时
因为要打开一项服务,延时判断是否打开成功
karying 2015-08-06
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
直接返回干嘛延时?
因为要打开一项服务,需要延时判断是否打开成功,如果打开失败则Istrue为false,所以用到了延时
karying 2015-08-06
  • 打赏
  • 举报
回复
由于在移动设备的时候对Istrue做了延时判断,最后返回的时候不用延时的话,Istrue的值不会被立即更新??,那么函数的返回值就会一直是true了
karying 2015-08-06
  • 打赏
  • 举报
回复
谢谢各位了
karying 2015-08-06
  • 打赏
  • 举报
回复
引用 6 楼 jikeytang 的回复:
那就需要可能在打开一项服务里边做回调处理,不是手动的延时处理。

function service(fn){
    // todo
    fn();
}
service(function(){
    browserRedirect();
});
看看这样可以不
非常感谢,成功解决。我对延时的理解有问题,回调好呀
天际的海浪 2015-08-05
  • 打赏
  • 举报
回复
没看明白为什么要延时
slwsss 2015-08-05
  • 打赏
  • 举报
回复
直接返回干嘛延时?
内容概要:本文围绕《【卫星信号】模拟卫星信号传播研究(Matlab代码实现)》这一技术资源展开,系统介绍了利用Matlab进行卫星信号传播过程建模与仿真的方法。该资源聚焦于构建卫星信号在复杂空间环境的传播模型,综合考虑自由空间路径损耗、大气吸收、多径效应、多普勒频移、电离层闪烁及噪声干扰等多种物理因素,通过Matlab编程实现信号传输特性的动态仿真与可视化分析,帮助研究人员深入掌握卫星通信信道的关键特性与建模流程。; 适合人群:具备Matlab编程能力和通信原理基础知识的高校研究生、科研机构研究人员及从事卫星通信、导航定位、遥感遥测等领域的工程技术人员,特别适用于需要完成相关课题仿真、毕业设计或项目开发的初级与级科研人员。; 使用场景及目标:①用于教学与课程设计加深对卫星信号传播机制的理解;②支撑卫星通信系统链路预算、接收机灵敏度分析与抗干扰算法设计;③服务于学术论文撰写、科研项目申报的仿真验证环节,提供可复用的代码框架与建模思路。; 阅读建议:建议读者结合经典通信理论教材同步学习,重点剖析代码关于信号调制、信道建模、噪声叠加与接收端解调等模块的实现逻辑,动手运行并调整轨道参数、频率、环境条件等变量,观察信号质量变化,从而深化对卫星信道动态行为的认知。

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧