JavaScript一个简单的问题,谢谢大家~!

小乐乐101010 2009-03-04 11:38:13
请帮我看一下,我想点击输出PDF按钮后,按钮变灰,之后倒计时,现在情况是按钮变灰了,但是不倒计时。请帮忙看一下。谢谢

<!--<%/*
* @createPerson Jeffrey.Xu
* @createDate 2004-12-03
* @modifyPerson
* @modifyDate
* @modifyReason
* @className
* @description 打印预览
*/%>-->
<%@ page pageEncoding="utf-8" %>
<%@ page language = "java" contentType="text/html"%>
<%@ page import="java.util.*"%>
<%@ page import="com.teip.proposal.*"%>
<%@ page import="com.teip.proposal.vo.*"%>
<%@ page import="com.teip.proposal.benefit.*"%>
<%@page import="com.framework.sa.vo.*" %>
<%@page import="com.framework.security.*" %>
<%@page import="com.framework.common.*" %>
<%
IUserValueObject userObject = (IUserValueObject)session.getAttribute(FrameworkNameSpace.USER_VALUEOBJECT);
Proposal proposal = (Proposal)session.getAttribute("proposal");
Agent agent = (Agent)request.getAttribute("agentvalueobject");
%>
<head>
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/<%= userObject.getAppearance()%>">
<script language="javascript" src="<%= request.getContextPath()%>/js/teip.js"></script>
<script language="javascript" src="<%= request.getContextPath()%>/js/check.js"></script>
<script language="javascript" src="<%= request.getContextPath()%>/js/formAction.js"></script>
</head>
<script>
function go(url)
{
document.frmBase.action = url;
document.frmBase.submit();
}

var speed = 1000; //速度
var wait = 2; //停留时间

function goOnce(url2){
document.frmBase.pdf.disabled = true;

if(wait == 0){
document.frmBase.pdf.value = "输出PDF";
document.frmBase.pdf.disabled = false;
wait=2;
}
else{
document.frmBase.pdf.value = "稍后打印"+wait;
wait--;
window.setTimeout("goOnce(url2)",speed);
document.frmBase.action = url2;
document.frmBase.submit();
}

}

</script>
<form name=frmBase method="post">
<div id="Layer2" style="position:absolute; left:276px; top:184px; width:462px; height:54px; z-index:2">
<table width="73%">
<tr>
<td width="25%" colspan="4"> <div align="left"><img src="<%=request.getContextPath()%>/images/proposal_step_4.gif" width="510" height="54"></div>
</td>
</tr>
</table>
</div>
<br><br>
<table border=0 width=80%>
<tr>
<td align=right width=64><img src="<%=request.getContextPath()%>/images/9.gif" width="63" height="62"></td>
<td valign=bottom>
<input type="button" name="pre" value="上一步" class="button1" onclick="javascript:go('LOADALL_PRINTCONTENT.do')">
</td>
<td rowspan=4 align=right><img src="<%=request.getContextPath()%>/images/10.gif" width="247" height="262"></td>
</tr>
<tr>
<td align=right><img src="<%=request.getContextPath()%>/images/7.gif" width="63" height="62"></td>
<td valign=bottom>
<input type="button" name="pre" value="打印预览" class="button1" onclick="javascript:go('LOAD_PAGE.do?build=yes&to=PRE')">
</td>
</tr>
<tr>
<td align=right><img src="<%=request.getContextPath()%>/images/6.gif" width="63" height="62"></td>
<td valign=bottom>
<input type="button" name="pdf" value="输出PDF" class="button1" onclick="javascript:goOnce('PRINT_PROPOSAL.do')">
</td>
</tr>
<tr>
<td align=right><img src="<%=request.getContextPath()%>/images/8.gif" width="63" height="62"></td>
<td valign=bottom>
<input type="button" name="s" value="完 成" class="button1" onclick="javascript:go('SAVE_PROPOSALSTEP.do')">
</td>
</tr>
</table>
</form>

...全文
240 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
luojihaidao 2009-03-04
  • 打赏
  • 举报
回复
最后补充一下, 如果goOnce() 要传递参数的话。

window.setTimeout("goOnce()",speed); 改为: window.setTimeout(function(){goOnce(参数列表);},speed);
luojihaidao 2009-03-04
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type='text/javascript'>
var speed = 1000; //速度
var wait = 2; //停留时间

function goOnce(){
var obj = document.getElementById('pdf');
obj.disabled = true;
if(wait == 0){
obj.value = "outPDF";
obj.disabled = false;
wait=2;
//这里提交
}
else{
obj.disabled = false;
obj.value = "wait:("+wait +")";
obj.disabled = true;
wait--;
window.setTimeout("goOnce()",speed);
}

}

</script>
</HEAD>

<BODY>
<form name=frmBase>
<input id='pdf' type="button" value="outPDF" onclick="goOnce();"/>
</form>
</BODY>
</HTML>



测试了好用!
LZ 应该注意的是 提交的时候, 和 window.setTimeout("goOnce()",speed); 的写法。

lxy0502030314 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tezhan120 的回复:]
引用 2 楼 lxy0502030314 的回复:
你的目的是为了让程序在这个地方等待2s吧,javascript里面没有提供这种功能额,你可以在函数里面判断wait的值来实现,也就是wait==0时,也可以用其他的一个变量,用来判断就可以了


我判断了~!但是一直在等待,回复不了正常的按钮呀~!??
[/Quote]你判断wait==0后把按钮恢复正常不就可以了
gengzhw 2009-03-04
  • 打赏
  • 举报
回复
你是想先设置延时打印,再保存?

如果是这样,那form的 target 就不应该是当前页面, form submit 后,本窗口就刷新了,那些延时会被取消了
小乐乐101010 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gengzhw 的回复:]
window.setTimeout("goOnce(url2)",speed);
如果想延时执行goOnce(url2);注意这有个问题,应该改成:
window.setTimeout("goOnce('"+url2+"')",speed);
延时结束时,url2 不是全局变量
[/Quote]

这样也不正确呀~!
gengzhw 2009-03-04
  • 打赏
  • 举报
回复
window.setTimeout("goOnce(url2)",speed);
如果想延时执行goOnce(url2);注意这有个问题,应该改成:
window.setTimeout("goOnce('"+url2+"')",speed);
延时结束时,url2 不是全局变量
小乐乐101010 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caiying2009 的回复:]
主要是“传参”

HTML code
function goOnce(url2){
document.frmBase.pdf.disabled = true;

if(wait == 0){
document.frmBase.pdf.value = "输出PDF";
document.frmBase.pdf.disabled = false;
wait=2;
document.frmBase.action = url2;
document.frmBase.submit();
}
else{
document.frmBase.pdf.value = "稍后打印"+wait;
wait--;
window.setTimeout(…
[/Quote]

你提供的这种方法也试过了,没有反映。不对呀!~
小乐乐101010 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lxy0502030314 的回复:]
你的目的是为了让程序在这个地方等待2s吧,javascript里面没有提供这种功能额,你可以在函数里面判断wait的值来实现,也就是wait==0时,也可以用其他的一个变量,用来判断就可以了
[/Quote]

我判断了~!但是一直在等待,回复不了正常的按钮呀~!??
小乐乐101010 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxy0502030314 的回复:]
把document.frmBase.action = url2;
document.frmBase.submit();
这两句删了试试,应该可以吧.
[/Quote]

这个我试了,删除了,就无法打印PDF了。
gengzhw 2009-03-04
  • 打赏
  • 举报
回复


function goOnce(url2){
document.frmBase.pdf.disabled = true;

if(wait == 0){
document.frmBase.pdf.value = "输出PDF";
document.frmBase.pdf.disabled = false;
wait=2;
}
else{
document.frmBase.pdf.value = "稍后打印"+wait;
wait--;
//以下代码有问题:
window.setTimeout("goOnce(url2)",speed); //这个不是sleep,有问题
document.frmBase.action = url2;
document.frmBase.submit();
}
}
caiying2009 2009-03-04
  • 打赏
  • 举报
回复
主要是“传参”

function goOnce(url2){
document.frmBase.pdf.disabled = true;

if(wait == 0){
document.frmBase.pdf.value = "输出PDF";
document.frmBase.pdf.disabled = false;
wait=2;
document.frmBase.action = url2;
document.frmBase.submit();
}
else{
document.frmBase.pdf.value = "稍后打印"+wait;
wait--;
window.setTimeout(function(){goOnce(url2)},speed);}
}

lxy0502030314 2009-03-04
  • 打赏
  • 举报
回复
你的目的是为了让程序在这个地方等待2s吧,javascript里面没有提供这种功能额,你可以在函数里面判断wait的值来实现,也就是wait==0时,也可以用其他的一个变量,用来判断就可以了
lxy0502030314 2009-03-04
  • 打赏
  • 举报
回复
把document.frmBase.action = url2;
document.frmBase.submit();
这两句删了试试,应该可以吧.
小乐乐101010 2009-03-04
  • 打赏
  • 举报
回复
谢谢大家~!我已经改了。发出来和大家分享一下~!~1
var speed = 1000; //速度
var wait = 60; //停留时间
var timerId ;
function goOnce(url2){
document.frmBase.pdf.disabled = true;
document.frmBase.action = url2;
document.frmBase.submit();
timerId = window.setInterval(function(){doesPDFValid(url2);},speed);
}

function doesPDFValid(){
document.frmBase.pdf.value = "稍后打印"+wait;
document.frmBase.pdf.disabled = true;
if (wait == 0){
document.frmBase.pdf.disabled = false;
document.frmBase.pdf.value = "输出PDF";
window.clearInterval(timerId);
wait = 60;
}else
wait--;
}
小乐乐101010 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 luojihaidao 的回复:]
JScript code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type='text/javascript'>
var speed = 1000; //速度
var wait = 2; //停留时间

function …
[/Quote]
谢谢你给我停工的方法,但是这样写的话,程序会反复提交打印。

87,992

社区成员

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

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