首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE中的JavaScript表单验证

问IE中的JavaScript表单验证
EN

Stack Overflow用户
提问于 2010-01-05 09:08:38
回答 4查看 719关注 0票数 0

大家好,我正在开发一个通讯录或电话簿应用程序。因此,目前我正在搜索记录。现在我有了这个表单,其中某些元素/字段是必需的或必填的,而其他元素/字段是可选的。

因此,我编写了一个非常简单的javascript函数来检查这些必填字段是否丢失。它在firefox和chrome上运行得很好,但在IE中就不行了。

在IE的js中,if子句似乎失败了,因为无论我是输入必填字段还是没有输入必填字段,我都会收到警告消息,告诉我输入必填字段。请注意,这不会只发生在firefox的IE中。所以我会在这里放一些相关的代码给你看看,希望你能在这里帮助我:

头

一些css代码

..。

代码语言:javascript
复制
<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从数据库查询中自动填充的。而其他的则是简单的下拉菜单。

代码语言:javascript
复制
  <select name="Service">
  ... etc.. 

希望你知道我这里有什么,为什么IE总是给我警告信息,请在我输入或不输入任何表单字段后填写必填字段。

再次提前感谢您..

EN

回答 4

Stack Overflow用户

发布于 2010-01-05 10:23:32

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

代码语言:javascript
复制
 <select name ="Service">

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

然而,IE总是得到空值,因为我没有显式地指定元素标签的value属性。所以我所做的就是把我的代码从上面的代码改成下面的代码:

代码语言:javascript
复制
  <select name="Service">
     <option value="NOCC">NOCC</option>
     <option value="HVAC">HVAC</option>
     ....etc..
  </select>

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

感谢你们所有人的帮助,我从你们的帖子中学到了一些新东西,如JQuery,我确实从中受益良多。

干杯

票数 1
EN

Stack Overflow用户

发布于 2010-01-05 09:12:48

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

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

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

使用jQuery最容易做到这一点,如下所示:

代码语言:javascript
复制
if ($('#service').val() === ""
 || $('#somethingElse').val() === "") {
    alert("Please enter all necessary fields.");
    return false;
} else
    return true;
票数 0
EN

Stack Overflow用户

发布于 2010-01-05 09:14:24

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

我已经在Asp.net中使用过它,并且在适应我的需求方面遇到了一些问题。在这里有相当多的用户使用过这个解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2003494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档