JavaScript难题,100分送上!

qouoww 2004-07-22 11:39:34
请问各位大虾,我下面的代码有何不对?

<script LANGUAGE="javascript">
<!--
function checkvalue(obj, low, up, mode, lable){
/*
Mode = 1 检测是否为空 2是否是数字 4是否整数
8是否是为数字、字母和_.-
16 自定义字符检测
32 长度检测
64 数字大小检测
*/
var temp,type;
var length, i, base, str;

str=getformvalue(obj);
if(str==null){
lenght=0;
str="";
}
else{
length = str.length
}
temp=""
if( mode % 2 >= 1 ){
if( str == "" ){
temp = temp + "“" + lable + "”" + "不能为空!" + "\n";
}
}

if( mode % 4 >= 2 ){
base = "0123456789."
for(i = 0;i<=length-1;i++)
if( base.indexOf(str.substring(i, i+1)) == -1 ){
temp = temp + "“" + lable + "”" + "必需是数字!" + "\n";
break;
}
}

if( mode % 8 >= 4 ){
base = "0123456789"
for(i = 0;i<=length-1;i++)
if( base.indexOf(str.substring(i, i+1)) == -1 ){
temp = temp + "“" + lable + "”" + "必需是整数!" + "\n";
break;
}
}

if( mode % 16 >= 8 ){
base = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789_-."
for(i = 0;i<=length-1;i++)
if( base.indexOf(str.substring(i, i+1)) == -1 ){
temp = temp + "“" + lable + "”" + "包含非法字符!它只能是字母、数字和“- _ .”。" + "\n";
break;
}
}

if( mode % 32 >= 16 ){
base = low.replace("[a-z]", "abcdefghijklmnopqrstuvwxyz")
base = base.replace("[a-z]", "abcdefghijklmnopqrstuvwxyz")
base = base.replace( "[0-9]", "0123456789")
for(i = 0;i<=length-1;i++)
if( base.indexOf(str.substring(i, i+1)) == -1 ){
temp = temp + "“" + lable + "”" + "包含非法字符!它只能是" + up + "。" + "\n";
break;
}
}

if( mode % 64 >= 32 ){
if( ! (length >= low && length <= up) ){
temp = temp + "“" + lable + "”" + "的长度必需在" + low + "到" + up + "之间!" + "\n";
}
}

if( mode % 128 >= 64 ){
if( ! (parseInt(str) >= parseInt(low) && parseInt(str) <= parseInt(up)) ){
temp = temp + "“" + lable + "”" + "必需在" + low + "到" + up + "之间!" + "\n";
}

}
if(temp!=""){
alert(temp);
type=(getformtype(obj));
if(type!="radio" && type!="checkbox"){
obj.focus();
}
return false;
}
return true;

}


function add_onsubmit(add) {

//客户端脚本验证
for (j=1;j<<%=taskbatteryamount%>;j++)
{

if (!checkvalue(add.voltage+j,0,0,1,"j+#电池电压值")) return false;
}

}

//voltage1是文本框的name,后面“”内的文本是用来显示出错信息的。
//-->
</SCRIPT>
其中客户端脚本是验证不定数量(由变量taskbatteryamount控制)的文本框,因此采用了一个循环语句,可是为什么运行不能通过呢?
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qouoww 2004-07-22
  • 打赏
  • 举报
回复
不行,压根就不执行;
if (!checkvalue(add.voltage+j,0,0,1,"j+#电池电压值")) return false;
这句有什么问题?
sheng9hhd 2004-07-22
  • 打赏
  • 举报
回复
1.变为整数(这是必需的)
2.如果还有问题,你试试先
...
var pp = <%=cint(你的变量)%>;
for (j=1;j<pp;j++)
...
pfc001 2004-07-22
  • 打赏
  • 举报
回复
错误提示是什么?
qouoww 2004-07-22
  • 打赏
  • 举报
回复
这是我在前面定义的变量;
另外要说明的是,前面checkvalue函数是没有问题的,只是在后面add_onsubmit(add) 有问题,阁下的意思是不是说<%=taskbatteryamount%>要变成整数才行,如果是如何做?用
<%=cint(taskbatteryamount)%>?
sheng9hhd 2004-07-22
  • 打赏
  • 举报
回复
<%=taskbatteryamount%>没问题吧?
qouoww 2004-07-22
  • 打赏
  • 举报
回复
这样也没什么效果,还有什么办法?
sheng9hhd 2004-07-22
  • 打赏
  • 举报
回复
if (!checkvalue(eval("add.voltage"+j.toString()),0,0,1,"j+#电池电压值")) return false;
sheng9hhd 2004-07-22
  • 打赏
  • 举报
回复
if (!checkvalue(eval(add.voltage+j.toString()),0,0,1,"j+#电池电压值")) return false;

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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