1: 可以在设定dict时也把s初始化:dict.r1 = 1;s.r1 = 0;
//统计个成员的选中次数
for(i=0; i<o.length; i++)
{
if(! s[o[i].name]) continue;
if(o[i].disabled){ s[o[i].name]=null;continue; }
if(o[i].type == 'radio' || o[i].type == 'checkbox')
{
if(o[i].checked) s[o[i].name]++;
}
}
判断时多判断一个null2:
var minc = 'A'.charCodeAt(0);
function chk(str,num){
if(str.length!=num)return false;
str = str.toUpperCase();
var arr = [];
var maxc = minc+num-1;
for(var i=0;i<str.length;i++){
var el = str.charCodeAt(i);
if(el<minc || el>maxc)
return false;
for(var j=0;j<i;j++)
if(el==arr[j])return false;
arr[i]=el;
}
return true;
}
//统计个成员的选中次数
for(i=0; i<o.length; i++)
{
if(! s[o[i].name]) continue;
if(o[i].disabled){ s[o[i].name]=null;continue; }
if(o[i].type == 'radio' || o[i].type == 'checkbox')
{
if(o[i].checked) s[o[i].name]++;
}
}
判断时多判断一个null2:
var minc = 'A'.charCodeAt(0);
function chk(str,num){
if(str.length!=num)return false;
str = str.toUpperCase();
var arr = [];
var maxc = minc+num-1;
for(var i=0;i<str.length;i++){
var el = str.charCodeAt(i);
if(el<minc || el>maxc)
return false;
for(var j=0;j<i;j++)
if(el==arr[j])return false;
arr[i]=el;
}
return true;
}
解决方案 »
- 这段js怎么解密,请高手帮忙
- JavaScript写的框架操作在IE中正常执行,但在Firefox达不到效果,高手请进,谢谢
- 如果图片链接里含有“年会”汉字,则ie会报错
- 网页中图片的裁剪是怎么做的?
- 请教各位高手domain这个属性怎么用啊,帮帮我啊,各位大侠!
- js 能否设置 多个 cookie值?
- 这样写document.getElementById("txt1").innerHTML="hello";对吗
- 关于javascript 原型问题。
- 谁是JS高手,为什么常看到“总是显示错误:类型不匹配”
- javasctipt允许在if语句中再嵌套if语句吗?
- javascript如何判断当前xml结点是否有子节点?
- 为什么我的右键菜单不能正确显示
chk(str,num)?
第二个测试:alert( chk("BCDA",4) )
->
if(s[o[i].name]==null) continue;判断错了,纠正一下
{
if(s[i] == null) //添加的
continue;
if(dict[i] == -1)
...第一个问题是否可以解决?
var minc = 'A'.charCodeAt(0);//字母A的编码
function checkText(str,num){
var ret = -1;//出错返回值
if(str.length!=num)return ret;//判断选项个数
str = str.toUpperCase();//选项大写字母
var arr = [];//记录判断通过的选项,用来判别重复
var maxc = minc+num-1;//最大字母的编码
for(var i=0;i<str.length;i++){
var el = str.charCodeAt(i);
if(el<minc || el>maxc)//判断编码以外的字符
return ret;
for(var j=0;j<i;j++)//判断是否重复选项
if(el==arr[j])return ret;
arr[i]=el;//保存判断通过的选项
}
return num;
}
{
if(o[i].checked) s[o[i].name]++;
}
else if(o[i].type == 'text')///////添加的部分
s[o[i].name] = checkText(o[i].value,dict[o[i].name]);
else
{
if(s[i] < 0)////添加的部分
{
k = false;
alert(i + " 必须填写" + dict[i] + "项");
}
else if(s[i] != dict[i])
{
k = false;
alert(i + " 必须选择" + dict[i] + "项");
}
}
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language="javascript">
var dict = {};
var s = {};//对象dict用于保存规定的选择数
var minc = 'A'.charCodeAt(0);//字母A的编码
function checkText(str,num){
var ret = -1;//出错返回值
if(str.length!=num)return ret;//判断选项个数
str = str.toUpperCase();//选项大写字母
var arr = [];//记录判断通过的选项,用来判别重复
var maxc = minc+num-1;//最大字母的编码
for(var i=0;i<str.length;i++){
var el = str.charCodeAt(i);
if(el<minc || el>maxc)//判断编码以外的字符
return ret;
for(var j=0;j<i;j++)//判断是否重复选项
if(el==arr[j])return ret;
arr[i]=el;//保存判断通过的选项
}
return num;
}function check(form)
{
var i, o = form.elements;
var k = true; //统计个成员的选中次数
for(i=0; i<o.length; i++)
{
if(s[o[i].name]==null) continue;
if(o[i].disabled){ s[o[i].name]=null;continue; }
if(o[i].type == 'radio' || o[i].type == 'checkbox')
{
if(o[i].checked) s[o[i].name]++;
}
else if(o[i].type == 'text')
s[o[i].name] = checkText(o[i].value,dict[o[i].name]);
}
//与规定的次数进行比较
for(i in dict)
{
if(s[i] == null)
continue;
if(dict[i] == -1)
{
if(s[i] < 1)
{
k = false;
alert(i + " 必须至少选择1项");
}
}
else
{
if(s[i] < 0)
{
k = false;
alert(i + " 必须填写" + dict[i] + "项");
}
else if(s[i] != dict[i])
{
k = false;
alert(i + " 必须选择" + dict[i] + "项");
}
}
}
return k;
}
</script></head><body>
<form name="form1" method="post" action="#" onSubmit="return check(this);">
<p>1、你是什么星座?</p>
<p>
<input type="radio" name="r1" value="1" disabled > A、白羊座<br>
<input type="radio" name="r1" value="2" disabled > B、水平座<br>
</p>
<script>dict.r1 = 1;s.r1 = 0;</script>
<p>2、你的属相?</p>
<p>
<input type="radio" name="r2" value="1"> A、羊<br>
<input type="radio" name="r2" value="2"> B、狗<br>
<input type="radio" name="r2" value="3"> C、猪<br>
</p>
<script>dict.r2 = 1;s.r2 = 0;</script>
<p>3、你认为哪个星座脾气比较大?请在下面选择三项(必须是三项)</p>
<p>
<input type="checkbox" name="c3" value="1"> A、白羊座<br>
<input type="checkbox" name="c3" value="2"> B、金牛座<br>
<input type="checkbox" name="c3" value="3"> C、天蝎座<br>
<input type="checkbox" name="c3" value="4"> D、人马座<br>
<input type="checkbox" name="c3" value="5"> E、水平座<br>
<script>dict.c3 = 3;s.c3 = 0;</script>
</p>
<p>4、按照星座的魅力指数进行排序</p>
<p>
A、白羊座<br>
B、金牛座<br>
C、天蝎座<br>
D、人马座<br>
E、水平座<br>
</p>
<p>
<input type="text" name="t4">
<script>dict.t4 = 5;s.t4 = 0;</script>
</p>
<p>5、你认为哪些星座脾气比较小?</p>
<p>
<input type="checkbox" name="c5" value="1">A、白羊座<br>
<input type="checkbox" name="c5" value="2">B、金牛座<br>
<input type="checkbox" name="c5" value="3">C、天蝎座<br>
<input type="checkbox" name="c5" value="4">D、人马座<br>
<input type="checkbox" name="c5" value="5">E、水平座<br>
<script>dict.c5 = -1;s.c5 = 0;</script>
</p>
<p>
<input type="submit" name="Submit" value="提交">
</p>
</form>
</body>
</html>
{
var i, o = form.elements;
var k = true;
for(i in dict)/////添加的,忘记清0了^_^
s[i] = 0;
...