高手请近,有些难度,给高分!!!!!!

TideKong 2002-07-10 08:25:07
如下:

我的意图是:
1)判断form中所有select必须选择非第0个元素
2)判断form中所有input 必须不为空且名字为s_elemt的元素必须为数字

带有?????????就是出错的地方
function check_elements(form_name,s_elemt)
{
var inputs = eval("document."+form_name+".elements");
var selects=document.all.tags("select");
for(i=0;i<inputs.length;i++)
{
if (selects[i].options[0].selected)//??????????????
{
inputs[i].focus();
alert("请选择对应的项目!");
return false;
}

if ((inputs[i].type).toLowerCase()=="text" && inputs[i].value.replace(/^\s+|\s+$/g,"").length ==0)
{
inputs[i].focus();
alert("不能为空!\n请输入对应的内容!");
return false;
if (inputs[i].name==s_elemt)//???????????????
{
if (!isNaN(inputs[i].value))
{
inputs[i].focus();
alert("请输入数字!");
return false;
}
}
}

}
eval("document."+form_name+".submit()");
}
...全文
18 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
TideKong 2002-07-12
  • 打赏
  • 举报
回复
最新的版本:

function check_elements(form_name,s_elemt)
{
var i;
//var inputs = eval("document."+form_name+".elements");
var inputs=document.all.tags("input");
var selects=document.all.tags("select");

for (i=0;i<selects.length;i++)
{
if (selects[i].options[0].selected)//selects[i].selectedIndex==0
{
selects[i].focus();
alert("请选择对应的项目!");
return false;
}
}

for(i=0;i<inputs.length;i++)
{
if ((inputs[i].type).toLowerCase()=="text")
{
if (inputs[i].value.replace(/^\s+|\s+$/g,"").length ==0)
{
inputs[i].focus();
alert(" 不能为空!\n 请输入对应的内容!");
return false;
}
else if (inputs[i].name.indexOf(s_elemt)!=-1 && isNaN(inputs[i].value))
{
inputs[i].focus();
alert("请输入数字!");
return false;
}
}
}
eval("document."+form_name+".submit()");
}
Naola2001 2002-07-11
  • 打赏
  • 举报
回复
有收获
lanbor 2002-07-11
  • 打赏
  • 举报
回复
不过判断form中所有input 必须不为空且名字为s_elemt的元素必须为数字还没有解决。是逻辑错误,应该为:
if ((inputs[i].type).toLowerCase()=="text"))

if (inputs[i].value.replace(/^\s+|\s+$/g,"").length ==0){
inputs[i].focus();
alert("不能为空!\n请输入对应的内容!");
return false;
}
else
if ((inputs[i].name==s_elemt) && (!isNaN(inputs[i].value)) {
inputs[i].focus();
alert("请输入数字!");
return false;
}
我没调试,大概就这意思...
meizz 2002-07-11
  • 打赏
  • 举报
回复
document.getElementsByName("s_elemt") //这样得到的是一组数组
document.getElementsByName("s_elemt").length //得到这一数组的长度
document.getElementsByName("s_elemt")[i] //操作第i+1个s_elemt元素
meizz 2002-07-11
  • 打赏
  • 举报
回复
document.getElementsByName("s_elemt") 这样就可以取到name=s_elemt的元素了。
TideKong 2002-07-11
  • 打赏
  • 举报
回复
mmkk()说得有道理,我回去改一下,不过判断form中所有input 必须不为空且名字为s_elemt的元素必须为数字还没有解决。
TideKong 2002-07-11
  • 打赏
  • 举报
回复
多谢 lanbor(兰波) , llrock(百乐宝) 等

原来是isNaN我没搞清楚,哈哈,也是我没有多推敲,

接下来,就是要加上对参数的控制,比如有多个元素要判断是否为数字。就象dm里面隐藏多个层一样,有兴趣大家也来试一下,如果我写好了会贴上来的

多谢多谢大家!!!!
llrock 2002-07-11
  • 打赏
  • 举报
回复
再试试看]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>

<form name=form1>
<select name="select1">
<option></option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
</select>
<select name="select2">
<option></option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select><BR>
<INPUT type="text" NAME="text1"><BR>
<INPUT type="text" NAME="text1"><BR>
text2<INPUT TYPE="TEXT" NAME="text2"><BR>
<INPUT type="button" value=hello onclick="checkIt('form1','text1')">
</form>

<SCRIPT LANGUAGE="JavaScript">
<!--
function returnSelected(e){
for(j=1;j<e.options.length;j++) if(e.options[j].selected)return true;
return false;
}

function checkIt(form_name,s_elemt){
var selects=document.all.tags("select");
for(i=0;i<selects.length;i++)
if(!returnSelected(selects[i])){
selects[i].focus();
return alert("请选择对应的项目!")
}
var inputs =document.all.tags("input");// eval("document.all['"+form_name+"'].elements");
for(j=0;j<inputs.length;j++)
if(inputs[j].type=='text'){
if(inputs[j].name==s_elemt&&isNaN(inputs[i].value)) {
inputs[j].focus();
inputs[j].select();
return alert("请输入数字!");
}
if(inputs[j].value.replace(/\s*/g,'')==''){
inputs[j].focus();
return alert("不能为空!\n请输入对应的内容!");
}

}

}
//-->
</SCRIPT>
</BODY>
</HTML>
lanbor 2002-07-11
  • 打赏
  • 举报
回复
把 !isNaN(inputs[i].value) 改成 isNaN(inputs[i].value)
TideKong 2002-07-11
  • 打赏
  • 举报
回复
多谢大家这么热心!!!!
这是修改后的代码,可是还是判断不了数字的问题!!!
大家有兴趣再干一下!!!


function check_elements(form_name,s_elemt)
{
var i;
//var inputs = eval("document."+form_name+".elements");
var inputs=document.all.tags("input");
var selects=document.all.tags("select");

for (i=0;i<selects.length;i++)
{
if (selects[i].options[0].selected)//selects[i].selectedIndex==0
{
selects[i].focus();
alert("请选择对应的项目!");
return false;
}
}

for(i=0;i<inputs.length;i++)
{
if ((inputs[i].type).toLowerCase()=="text")
{
if (inputs[i].value.replace(/^\s+|\s+$/g,"").length ==0)
{
inputs[i].focus();
alert(" 不能为空!\n 请输入对应的内容!");
return false;
}
else if (inputs[i].name==s_elemt && !isNaN(inputs[i].value))
{
inputs[i].focus();
alert("请输入数字!");
return false;
}
}
}
eval("document."+form_name+".submit()");
}
llrock 2002-07-11
  • 打赏
  • 举报
回复
建议:表单最好有默认值,避免用户漏填、误填。处理也容易,我把你的稍微改了一下,希望没理解错你的意思
llrock 2002-07-11
  • 打赏
  • 举报
回复
建议:表单最好有默认值,避免用户漏填、误填。处理也容易,我把你的稍微改了一下,希望没理解错你的意思
llrock 2002-07-11
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>

<form name=form1>
<select name="select1">
<option></option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
</select>
<select name="select2">
<option></option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select><BR>
<INPUT type="text" NAME="text1"><BR>
<INPUT type="text" NAME="text1"><BR>
text2<INPUT TYPE="TEXT" NAME="text2"><BR>
<INPUT type="button" value=hello onclick="checkIt('form1','text1')">
</form>

<SCRIPT LANGUAGE="JavaScript">
<!--
function returnSelected(e){
for(j=1;j<e.options.length;j++) if(e.options[j].selected)return true;
return false;
}

function checkIt(form_name,s_elemt){
var selects=document.all.tags("select");
for(i=0;i<selects.length;i++)
if(!returnSelected(selects[i])){
selects[i].focus();
return alert("请选择对应的项目!")
}
var inputs =document.all.tags("input");// eval("document.all['"+form_name+"'].elements");
for(j=0;j<inputs.length;j++)
if(inputs[j].type=='text'&&inputs[j].value.replace(/\s*/g,'')==''){
inputs[j].focus();
return alert("不能为空!\n请输入对应的内容!");
}
}
//-->
</SCRIPT>
</BODY>
</HTML>
blues-star 2002-07-10
  • 打赏
  • 举报
回复
1.selectid.selectedIndex;
mmkk 2002-07-10
  • 打赏
  • 举报
回复
if (selects[i].options[0].selected)
肯定是i超出了select集合的范围,因为你用的是所有input的length

87,904

社区成员

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

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