JavaScript FAQ(十一)——表单(Form)

43 篇文章 0 订阅
33 篇文章 0 订阅

 九、表单

 

1. 验证表单(Validating a Form

Q:我如何在表单数据提交服务器之前进行验证?
A:要验证表单的输入,可以在表单的onSubmit事件处理器中调用你的验证函数。当用户提交表单时,浏览器首先会调用onSubmit事件处理器。事实上,只有这个处理器返回true时,表单才会被提交。在下面的例子中,onSubmit事件处理器验证了用户email地址。(为了简单期间,如果地址中没有空格、包含@,并且@既不在开始也不在结尾,就认为该地址合法。)注意,处理器本身必须包含一个return语句,为了向浏览器返回ture或者false

你的Email:

这个例子使用的代码:

<script language="JavaScript">
<!--
function isValid() {
 var email=document.form1.t1.value;
 if (email.indexOf(' ')==-1 
      && 0<email.indexOf('@')
      && email.indexOf('@')+1 < email.length
 ) return true;
 else alert ('Invalid email address!')
 return false;
}
//-->
</script>
<form name=form1 
method=post
action="javascript:alert('The form is submitted.')" 
onSubmit="return isValid()">
Your email:
<input type=text name=t1 size=20 >
<input type=submit value=Submit>
</form>


2. 组合输入域(Combining Input Fields

Q:我可以只从一个文本域获取一个以上的值从而节省表单的空间吗?

A:可以。例如,你可以显示一个文本输入域和一个选择框。使用这个选择框,用户可以选择要在文本域中输入哪个类型的值。实际上,所有输入值都通过hidden表单元素提交到了服务器。试一下这个例子:

这个表单由下面的JavaScript代码创建:

<form name=form1 action="" onSubmit="return validate()">
<input name="name"    type=hidden value="">
<input name="email"   type=hidden value="">
<input name="country" type=hidden value="">
<select name=s1 onChange="refill()">
<option value="name" selected >Your name:
<option value="email"         >Your email address:
<option value="country"       >Your country:
</select>
<input name=t1 type=text   value="" size=20>
<input name=b1 type=submit value="Enter!">
</form>
<script language="JavaScript">
<!--
isFilled=new Array(0,0,0);
oldActiveField="name"; oldIndex=0;
theActiveField="name"; theIndex=0;
theValue='';
theForm=document.form1;
function refill() {
 oldIndex=theIndex;
 theIndex=theForm.s1.selectedIndex;
 oldActiveField=theActiveField; 
 theActiveField=theForm.s1.options[theIndex].value;
 theValue=theForm.t1.value;
 eval('theForm.'+oldActiveField+'.value=theValue');
 eval('theForm.t1.value=theForm.'+theActiveField+'.value');
 if (theValue!='') isFilled[oldIndex]=1;
 if (theValue=='') isFilled[oldIndex]=0;
}
function read() {
 oldIndex=theForm.s1.selectedIndex;
 oldActiveField=theForm.s1.options[oldIndex].value;
 theValue=theForm.t1.value;
 eval('theForm.'+oldActiveField+'.value=theValue');
 if (theValue!='') isFilled[theIndex]=1; 
 if (theValue=='') isFilled[theIndex]=0; 
}
function validate() {
 read();
 for (var k=0; k<isFilled.length; k++) {
  if (!isFilled[k]) {
   theIndex=k;
   theForm.s1.selectedIndex=k;
   theForm.t1.value='';
   theActiveField=theForm.s1.options[k].value;
   if (oldIndex==k) alert ('Please fill in your '+theActiveField)
   return false;
  }
 }
 alert ('You are submitting the following data:'
  +'/nName:    '+theForm.name.value
  +'/nEmail:   '+theForm.email.value
  +'/nCountry: '+theForm.country.value
 )
 return false;
 // Instead of returning false in all cases, 
 // a real-life code here would validate the data
 // and return true if the user submitted valid data 
}
//-->
</script>


3. 回车键会起作用吗?(Will the Enter key work?

Q:当用户按下Enter键时,我的表单会被提交吗?

A:在多数浏览其中,如果你的表单只有一个文本输入域,按下Enter键会提交表单。(表单也可能会包含其他输入元素,如复选框、下拉选择框、单选按钮、密码输入域、隐藏域等等。)

 

4. 使单选按钮不可选(Disabling a Radio Button)

Q:我如何在一个表单中让一个单选按钮不可用(即使其不可选)?

A:要让一个单选按钮不可选,可以在按钮的INPUT标记中使用onClick事件处理器,如下:

<INPUT type="radio" name="myButton" value="theValue"
onClick="this.checked=false;
alert('Sorry, this option is not available!')">

在下面的例子中,“Courier delivery”选项是不可用的。试一下——你会得到警示框:Sorry, this option is not available!

Delivery method (choose one):
download
regular mail
courier delivery

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值