如何在一个onsubmit事件上执行两个方法

chishuiqingshen 2007-12-25 11:29:51
我项目中有一个bug,点击按钮提交数据时不会出现任何问题,但是回车提交时就出现问题了,
提交数据时必须现得对数据进行验证,然后提交,这是在程序执行的极短的时间内,快速敲击回车键就会造成重复数据提交,
如果在form中添加onsubmit='return num_check()'可以让用户在敲回车提交数据时验证,但没有方式防止重复提交,
如果在form中添加onsubmit='return checkSubmit()'可以让用户防止重复提交,但是没法对数据进行效验。
如果把两个方法写在一个方法里面应该怎么写呀?试了半天也没有如愿。
<SCRIPT LANGUAGE="JavaScript">
var checkSubmitFlg = false;

function checkSubmit() {

if (checkSubmitFlg == true) {

return false;

}

checkSubmitFlg = true;

return true;

}

document.ondblclick = function docondblclick() {

window.event.returnValue = false;

}

document.onclick = function doconclick() {

if (checkSubmitFlg) {

window.event.returnValue = false;

}

}



var str_num_count = 0;
function num_check(){
str_num_1 = document.form3.score.value;
str_num_count = 0;
if(<%=num_flag%>)
{
<%
for(i=1;i<=num_small;i++){
%>
str_num_2_<%=i%> = document.form3.score<%=i%>.value;
str_num_count = str_num_count+parseFloat(str_num_2_<%=i%>);
if(str_num_2_<%=i%>.length<1){alert("小题<%=i%>请输入分数");
return false; }


for (var i=0;i<str_num_2_<%=i%>.length;i++){
cmp_str=".0123456789";
str=str_num_2_<%=i%>.substring(i,i+1)
if (cmp_str.indexOf(str)<0){
alert("小题<%=i%>得分只能输入数字");
return false;
}}

<%}%>

if(parseFloat(str_num_count)!=parseFloat(str_num_1)){alert("小题分数之和必须和该题得分相等!!!"+parseFloat(str_num_count));
return false; }

}

if(str_num_1.length<1){alert("请输入分数");
return false; }


for (var i=0;i<str_num_1.length;i++){
cmp_str=".0123456789";
str=str_num_1.substring(i,i+1)
if (cmp_str.indexOf(str)<0){
alert("该题得分只能输入数字");
return false;
}}

if(parseFloat(str_num_1)><%=lim_score%>){alert("该题分数为:<%=lim_score%>分,批阅的分数不能大于该题分数!!!");
return false; }
checkSubmit();


document.form3.Submit.disabled=true;
document.form3.submit();
}


}
</script>
...全文
749 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chishuiqingshen 2008-01-11
  • 打赏
  • 举报
回复
我做java后台的东西,对这页面的东西很不熟悉,谢谢各位指点。
结贴!
wangjiafei 2008-01-06
  • 打赏
  • 举报
回复
同意思9楼
jiewenxu 2008-01-05
  • 打赏
  • 举报
回复
没有碰到过再简单的问题了
onsubmit='return (num_check() && checkSubmit());'
chishuiqingshen 2008-01-05
  • 打赏
  • 举报
回复
有的情况下是莫名其妙的问题,如果不把一些信息包装起来,有写代码能够起到正常的作用,有些情况下就不行。我感觉许多东西不能使用是采用框架的愿意,frame好使但是带来的问题却难以解决
ision 2007-12-26
  • 打赏
  • 举报
回复
确定了之后,要做处理,或者返回上一页之类的.
ision 2007-12-26
  • 打赏
  • 举报
回复
if(num_check()){ //我怀疑是在这是出了问题
document.form3.Submit.disabled=true;
alert("设置断点提交之前");
document.form3.submit();
}


-----------------------------
方法当参数???
ision 2007-12-26
  • 打赏
  • 举报
回复
不知是否可用fireEvert()方法.同时处理两个事件
Sean918 2007-12-26
  • 打赏
  • 举报
回复
用JS控制

要么把回车建屏蔽掉,这样就不会有回车提交

要么就回车后就把整个页面disabled=true掉 ,最省事
chishuiqingshen 2007-12-26
  • 打赏
  • 举报
回复
谢谢slayerbb 我的这套程序有的页面的结果是程序自动根据输入的数值计算得到的,有的页面是通过手工直接录入的,第一种情况时,程序没有问题,但是第二种情况的时候,点回车也能够去验证,虽然验证出有非法数据弹出警告框,确定的时候还是能够提交上去,同样的程序怎么有的情况下可以有的情况下不可以呢?
烦劳slayerbb老兄再次指点,不胜感激!

function checkSubmit(){
if(checkSubmitFlg==true){
alert("设置断点你已经点过回车键了,为了防止你恶意重复提交");
return false;
alert("设置断点防止恶意提交之后返回假");
}else{
alert("设置断点将第一次回车提交时之前");
checkSubmitFlg=true;
alert("设置断点将第一次回车提交时之后");

if(num_check()){ //我怀疑是在这是出了问题
document.form3.Submit.disabled=true;
alert("设置断点提交之前");
document.form3.submit();
}

}
}
slayerbb 2007-12-25
  • 打赏
  • 举报
回复
function checkSubmit() {

if (checkSubmitFlg == true) {

return false;

} else{

checkSubmitFlg = true;

if(num_check()) {document.form3.Submit.disabled=true;
document.form3.submit();
}
}
}
同时移除num_check()里面的提交段。
即可
huyunning 2007-12-25
  • 打赏
  • 举报
回复
我也很想知道!

87,992

社区成员

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

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