你的每一行alert语句是不是结尾忘写分号 了 ?
……以下是我解决问题的看法:
“且四项的值不能使汉字,有一项是汉字都不行",过滤汉字就先封装一个方法,用 Unicode 字符范围判断或正则表达式 :
//检测是否为中文,true表示是中文,false表示非中文
function isChinese(str){
if(/^[\u3220-\uFA29]+$/.test(str)){
return true
}else{
return false
}
}
”只要一项有错误,就不执行加法操作“,用if{} else{} if 进行流程控制,if中对条件进行判断,如果前几项有一个不成立 ,则会跳到最后的else,如下
if(Number(one<0 || Number(one)>20 )||isChinese(one)){alert("第一项分值错误")
}else
if (Number(two<0 || Number(two)>25 )||isChinese(two)){
alert("第二项分值错误")
}else
if (Number(three<0 || Number(three)>25) ||isChinese(three)){
alert("第三项分值错误")
}else
if (Number(four<0 || Number(four)>25) ||isChinese(four)){
alert("第四项分值错误")
}
else{
var he = Num(one)+Number(two)+Number(three)+Number(four)
eg.$("he").value=he
}
我很少写JS 欢迎指正,希望帮到你
因为arr[0],arr[1],arr[2]都是不为0的数字,可以转换为true,arr[3]就是undefined了,转换为false。假如改成这样
var arr = [0,1,2,3]
for (var i = 0j = arr[i]i++) {
console.log(j)
}
就不输出了
你用 form.proid 取得的是一个控件组,就是同名的多个复选框,不能直接用 .value 的方式取值,需要每个判断是否被选中
<script type="text/javascript">function beforeSubmit(form){
var proidCheck = "0"
var proidCheck2 = "0"
for(var i=0i<form.proid.lengthi++){
if(form.proid[i].checked){
proidCheck = "1" //proid组中有选中则记录,并退出判断
break
}
}
for(var i=0i<form.pro2id.lengthi++){
if(form.pro2id[i].checked){
proidCheck2 = "1" //pro2id组中有选中则记录,并退出判断
break
}
}
if(proidCheck=='0' && proidCheck2=='0'){
alert('至少要选择一个')
return false
}
return false
}
</script>
<form action="saveorder.asp?type=add" method="post" onSubmit="return beforeSubmit(this)">
<input type="checkbox" name="proid" value="1">
<input type="checkbox" name="proid" value="2">
<input type="checkbox" name="proid" value="3">
<input type="checkbox" name="proid" value="4">
<input type="checkbox" name="proid" value="5">
<input type="checkbox" name="pro2id" value="11">
<input type="checkbox" name="pro2id" value="12">
<input type="checkbox" name="pro2id" value="13">
<input type="checkbox" name="pro2id" value="14">
<input type="checkbox" name="pro2id" value="15">
<input type="submit"/>
</form>