在每个下拉的onchange事件中都调一个函数,这个函数判断所有加起来是不是超过9
解决方案 »
- Map API 开发思路(只求思路,参与讨论也可)
- ExtJs 做的一棵导航树,出现莫名错误
- 链接一个窗口 这个穿口的地址栏 菜单栏都不要 应该怎么做啊
- 正则表达式 /[a-z].*?(?=\b[a-z]\b|$)/g 的问T,,,,,,,
- 请问下面的信息是不是一个正确的浏览器所发出的信息!
- 用Ajax无刷新能不能实现蜡烛的燃烧
- 请问如何用javascript限制0-100间的数
- 没分了,为何我不能使用wscript.shell
- 如何取得冒号以前的数字
- 一个图片显示的问题
- 关于Cookie的容量及多个问题,请高手指点!
- document.execCommand("SaveAs",...)的问题
<option>...</option>
<option>...</option>
<option>...</option>
</select><select name="select2" multiple >
<option>...</option>
<option>...</option>
<option>...</option>
<option>...</option>
<option>...</option>
<option>...</option>
</select><select name="select3" multiple >
<option>...</option>
<option>...</option>
<option>...</option>
<option>...</option>
<option>...</option>
<option>...</option>
</select>
<input name=button1 type=button value="测试" onclick=check()>
<script language=javascript>
function check()
{
num1=showNum("select1")
if(!((num1>=1)&&(num1<=3)))
{
alert("第一组选择错误")
return false;
}
num2=showNum("select2")
if(!((num2>=3)&&(num2<=6)))
{
alert("第二组选择错误")
return false;
}
num3=showNum("select3")
if(!((num3>=2)&&(num3<=6)))
{
alert("第三组选择错误")
return false;
}
var num=parseInt(num1)+parseInt(num2)+parseInt(num3)
if(num>9)
{
alert("总数选择错误")
return false;
}
}
function showNum(str)
{
var num=0
var obj=document.getElementById(str)
for(var i=0;i<obj.options.length;i++)
{
if(obj.options[i].selected)
{
num++
}
}
return num;
}
</script>
=>
应该设置multiple属性,这样才表示多选,
在这种情况下可以使用楼上的代码
var s2=[];
var s3=[]
function addNum(arr)
{
this.arr = arr;
this.onchange= function(){
this.arr.push(this.value);
}
}
var sel = document.getElementsByTagName("select");
checkNum.apply(sel[0],[s1]);
checkNum.apply(sel[1],[s2]);
checkNum.apply(sel[2],[s3]);function checkNum(){
if( s1.length > 3 || s1.length < 1 )
{
alert('select1选择错误');
return false;
}
if( s2.length > 6 || s2.length < 2 )
{
alert('select2选择错误');
return false;
}
if( s3.length > 3 || s3.length < 3 )
{
alert('select3选择错误');
return false;
}
if( s1.length + s2.length + s3.length > 9 )
{
alert('select总数错误');
return false;
}}其实checkNum用来在提交前做的检查
现在不是就是3个吗?
如果有其它的select,你可以设置select的id,用document.getElementById("selId")取得select对象
var s2 = [];
var s3 = [];
var s4 = [];
function addNum(arr)
{
this.arr = arr;
this.onchange = function() {
this.arr.push(this.value);
}
} var sel = document.getElementsByTagName("select");
checkNum.apply(sel[0], [s1]);
checkNum.apply(sel[1], [s2]);
checkNum.apply(sel[2], [s3]);
checkNum.apply(sel[3], [s4]); function checkNum()
{
if (s1.length != 1) {
alert("守门员选且仅选1个");
return FALSE;
}
if (s2.length < 3 || s2.length > 6) {
alert("后卫选且仅选3至6个");
return FALSE;
}
if (s3.length < 2 || s3.length > 6) {
alert("中场选且仅选2至6个");
return FALSE;
}
if (s4.length < 1 || s4.length > 3) {
alert("前锋选且仅选1至3个");
return FALSE;
}
if ((s1.length + s2.length + s3.length + s4.length) != 11) {
alert("球队人数错误,请重新选择");
return FALSE;
}
} -------------- end -------------------------------一刷新页面,总是弹出“守门员选且仅选1个”,就好像<body onload="alert('守门员选且仅选1个')">一样,但我没找到错误
addNum.apply,而不是checkNum.apply,因为昨天改的时候忘记改那里了!
// ----------------- start --------------------------- var s1 = [];
var s2 = [];
var s3 = [];
var s4 = [];
function addNum(arr)
{
this.arr = arr;
this.onchange = function() {
this.arr.push(this.value);
}
} var sel = document.getElementsByTagName("select");
checkNum.apply(sel[0], [s1]);
checkNum.apply(sel[1], [s2]);
checkNum.apply(sel[2], [s3]);
checkNum.apply(sel[3], [s4]); function checkNum()
{
if (s1.length != 1) {
alert("守门员选且仅选1个");
return FALSE;
}
if (s2.length < 3 || s2.length > 6) {
alert("后卫选且仅选3至6个");
return FALSE;
}
if (s3.length < 2 || s3.length > 6) {
alert("中场选且仅选2至6个");
return FALSE;
}
if (s4.length < 1 || s4.length > 3) {
alert("前锋选且仅选1至3个");
return FALSE;
}
if ((s1.length + s2.length + s3.length + s4.length) != 11) {
alert("球队人数错误,请重新选择");
return FALSE;
}
} // -------------- end -------------------------------随之的问题是,即使按要求分别从4个下拉菜单中选择,即按照程序,s1.length == 1,s2.length >2 && s2.length <7,s3.length >1 && s3.length < 7,s4.length >0 && s4.length < 4,选好后,点确定后,都会弹出“守门员选且仅选1个”,这会是哪里的问题呢?
addNum.apply(sel[1], [s2]);
addNum.apply(sel[2], [s3]);
addNum.apply(sel[3], [s4]);