IE中的JavaScript表单验证

时间:2010-01-05 01:08:38

标签: javascript

大家好我正在处理联系人或电话簿应用程序。所以目前我正在寻找记录。现在我有这个表单,其中某些元素/字段是必需的或必需的,而其他元素/字段是可选

所以我写了一个非常简单的javascript函数来检查这些必填字段是否缺失。它对firefox和chrome有效,但不在IE中。

似乎if子句在我的IE中失败了,因为在我输入必填字段或者没有输入必填字段时,我收到警告消息,告诉我输入所需的字段。请注意,这不会发生在Firefox只有IE浏览器中。所以我会在这里放一些相关的代码,让你看看希望你可以帮助我:

一些css代码

...

<script type="text/javascript">

function disp_confirm()

{

  if (document.contractor_phonebook_form.Service.value == "" || document.....etc.)

  {

    javascript:alert('Please enter all necessary fields!');  

    return false;

  }

  else

  {

     return true;

  }


 }


 </script>

 end of head beginning of body


 <form action='<?php $PHP_SELF; ?>' method='post' name="contractor_phonebook_form" target="_self" onSbumit="return disp_confirm()">

使用mysql和php填充表单元素,从数据库查询中自动填充一些表单元素。而其他人则是简单的下拉菜单。

  <select name="Service">
  ... etc.. 

希望你知道我在这里有什么,为什么IE总是给我提醒信息请填写必要的字段,我输入或不输入任何表格字段..

再次感谢你..

4 个答案:

答案 0 :(得分:1)

好的我找到了问题的答案......大多数浏览器会自动检测选项字段的值,这意味着我原来的是:

 <select name ="Service">

   <option>NOCC</option>
   <option>HVAC</option>
   ....etc.
 </select>

但是IE总是得到空值,因为我没有明确指定元素标记的value属性。所以我所做的只是将我的代码从顶部更改为以下内容:

  <select name="Service">
     <option value="NOCC">NOCC</option>
     <option value="HVAC">HVAC</option>
     ....etc..
  </select>

现在在IE中工作正常。奇怪的是,大多数浏览器都能够通过查看选项标签显示来检测值属性,但IE要求您专门定义值属性,否则将其视为空白或null。这就是我的if子句在IE中失败的原因,因为我没有指定value属性,因此它总是空白,即使我从下拉菜单中选择了一个值,它仍然将其视为空白。

谢谢大家的帮助,我肯定会从你的帖子中学到新的东西,比如JQuery。

欢呼声

答案 1 :(得分:0)

您应该像普通函数一样调用alert,而不先写javascript:

但是,您的问题是IE以不同方式实现value元素的select属性。

您需要检查“selected属性中的任何选项是否为true

这是最容易使用jQuery,如下所示:

if ($('#service').val() === ""
 || $('#somethingElse').val() === "") {
    alert("Please enter all necessary fields.");
    return false;
} else
    return true;

答案 2 :(得分:0)

有一个很好的jQuery cross browser solution并提供电子邮件地址,日期和其他常用功能的验证。您可以定义一个可以显示错误的公共div。

我在Asp.net上使用过它,并且很难根据我的需要调整它。这里有很多用户使用过这个解决方案。

答案 3 :(得分:0)

您无需在javascript:功能之前加alert();