onblur导致验证失效的问题

xxuu503 2008-07-31 10:38:19
我都快崩溃了,明显应该验证不通过的,偏偏验证通过了



function updateDiv(obj)
{
var temp=obj.name.replace("_q","")
var before=document.getElementsByName(temp+"_u_q")[0].value
var after=document.getElementById(temp+"_q_a")
after.innerHTML=(parseFloat(before)+parseFloat(obj.value)).toString()
}

function check()
{
var flag = true;
var msg = "";
var is_empty = true;
var texts = document.getElementsByTagName("INPUT")
var num1=0
var num2=0
var num3=0
for(var i=0;i<texts.length;i++)
{
if(texts(i).name.indexOf("_q") != -1 && texts(i).name.indexOf("_o_q") == -1 && texts(i).name.indexOf("_u_q") == -1)
{

//剩余数量
var quantity = document.all(texts(i).name.replace('_q','_o_q')).value * 1.0-document.all(texts(i).name.replace('_q','_u_q')).value * 1.0;
num1+=document.all(texts(i).name.replace('_q','_o_q')).value * 1.0
num2+=document.all(texts(i).name.replace('_q','_u_q')).value * 1.0
num3+=document.all(texts(i).name).value * 1.0
if(texts(i).value != 0)
{
is_empty = false;
}
}
}
if(num1<num2+num3)
{
alert("本次增加数量不能高于剩余量【原始数量减去已划拨数量】!")
return false
}
else
{
alert("为啥低于剩余量?")
}

if(is_empty)
{
msg ='\r\n请在本次增加数量中填入数字!';
flag = false;
}
if(!flag)
{
alert(msg);
}
return false;
}


<TABLE>
<tr>
<td>原始数量</td>
<td>已经划拨数量</td>
<td>本次划拨数量</td>
<td>本次划拨后数量</td>
</tr>
<tr>
<td align="center">
2000.0000 <input type="hidden" name="CON000010561_0_o_q" value="2000.0000">
</td>
<td align="center">
20340.0000 <input type="hidden" name="CON000010561_0_u_q" value="20340.0000">
</td>
<td align="center">
<input type="text" value="0" name="CON000010561_0_q" onblur="updateDiv(this)">
</td>
<td align="center">
<div id="CON000010561_0_q_a">20340.0000</div>
</td>
</tr>
<tr>
<td align="center">
3960.0000 <input type="hidden" name="CON000010561_1_o_q" value="3960.0000">
</td>
<td align="center">
4010.0000 <input type="hidden" name="CON000010561_1_u_q" value="4010.0000">
</td>
<td align="center">
<input type="text" value="0" name="CON000010561_1_q" onblur="updateDiv(this)">
</td>
<td align="center">
<div id="CON000010561_1_q_a">4010.0000</div>
</td>
</tr>
</TABLE>
<input type="submit" onclick="return check();" value="保 存">
...全文
371 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnkiminzhuhu 2008-08-06
  • 打赏
  • 举报
回复
你一步一步的执行下,看看是哪出错了不就行了?
bulebirds 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 littlelam 的回复:]
<input type="submit" onclick="return check();" value="保 存">
用了submit还用return check();???
return check()应该放在form的onsubmit
[/Quote]

有道理

把type的submit改成button试试
阿云ivan 2008-07-31
  • 打赏
  • 举报
回复
好长,先帮顶

有空再帮你看看
lovewds2002 2008-07-31
  • 打赏
  • 举报
回复
在updateDiv里先验证输入是否为数字,为空的话让他默认放0.
tengfei3003 2008-07-31
  • 打赏
  • 举报
回复
我给你测了下, 只要输入框不输入, num2 就会 有值
只要输入框重新输入,num2 就为 NaN
littlelam 2008-07-31
  • 打赏
  • 举报
回复
<input type="submit" onclick="return check();" value="保 存">
用了submit还用return check();???
return check()应该放在form的onsubmit
littlelam 2008-07-31
  • 打赏
  • 举报
回复
num1<num2+num3
这三个要先判断是否为数字
s_liangchao1s 2008-07-31
  • 打赏
  • 举报
回复
看不懂 写得乱七八糟
tengfei3003 2008-07-31
  • 打赏
  • 举报
回复
num1<num2+num3 中 num2 为 NaN
tengfei3003 2008-07-31
  • 打赏
  • 举报
回复
num2 NaN
s_liangchao1s 2008-07-31
  • 打赏
  • 举报
回复
你给个参考数据阿 什么样的数据出问题?
xxuu503 2008-07-31
  • 打赏
  • 举报
回复
tengfei3003 2008-07-31
  • 打赏
  • 举报
回复
应该是 document.getElementsByName 这玩意的漏洞
tengfei3003 2008-07-31
  • 打赏
  • 举报
回复
function updateDiv(obj)
{
var temp = obj.name;
var before = eval(document.all(temp.replace("_q","_u_q")));
var after = document.getElementById(temp.replace("_q","_q_a"));
after.innerHTML = (parseFloat(before.value)+parseFloat(obj.value)).toString()
}

可以用了
tengfei3003 2008-07-31
  • 打赏
  • 举报
回复
updateDiv(obj) 这有问题, 如果没这就是正常的
浴火_凤凰 2008-07-31
  • 打赏
  • 举报
回复
先判断是否为数字
lujunjsp 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lovewds2002 的回复:]
在updateDiv里先验证输入是否为数字,为空的话让他默认放0.
[/Quote]
xxuu503 2008-07-31
  • 打赏
  • 举报
回复
为啥不是数字?

[Quote=引用 15 楼 leosming 的回复:]
引用 5 楼 littlelam 的回复:
num1 <num2+num3
这三个要先判断是否为数字
[/Quote]
leosming 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 littlelam 的回复:]
num1 <num2+num3
这三个要先判断是否为数字
[/Quote]
xxuu503 2008-07-31
  • 打赏
  • 举报
回复

<form action="http://www.163.com">
<input type="submit" onclick="return false">
<input type="submit" onclick="return true">
</form>


自己try一下

至少ie里,我的做法是对的



[Quote=引用 6 楼 littlelam 的回复:]
<input type="submit" onclick="return check();" value="保 存">
用了submit还用return check();???
return check()应该放在form的onsubmit
[/Quote]

[Quote=引用 11 楼 hxb 的回复:]
submit类型的button是用来触发form表单的post/get动作,form表单是否真的post/get可由它的onsubmit事件控制 <form onsubmit="...">... </form>,如果onsubmit返回false则不提交,默认是返回ture的。

lz好像对表单的提交原理不是很清楚,建议补习一下。
[/Quote]
加载更多回复(3)

87,904

社区成员

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

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