1

我以前从未这样做过,所以如果我没有很好地描述我的问题或没有使用所有正确的语法,我深表歉意。

我在我的网站上有一个电子邮件表格。用户可以输入消息,以及他们的姓名和一些其他数据。一旦他们完成填写表格,他们就可以提交它,它会发送到我的电子邮件,一切都很好。因为表单中包含 JavaScript,所以我自动使用 CSS 将其隐藏,然后通过 JavaScript 使其可见。这样,如果用户关闭了 JavaScript,表单就不会出现。

而且效果很好。而且我认为它也显示得很好。我在我所有的本地测试浏览器(Chrome 21、FF 14、IE 9、Opera 12 和 Safari 5)以及通过 Adob​​e Browser lab 对 IE 8、7 和 6 进行了检查。在所有这些浏览器中,它看起来都很棒。我什至在我的安卓手机和我女朋友的黑莓手机上检查过。看起来不错。

直到我在我妈妈的电脑上用 IE 8 测试它。虽然在 Adob​​e Browserlab 中它说表单显示,但在实际测试中表单没有显示。

你可以在这里自己测试一下。

问题在于表单 ID“emailForm”。我的表单具有如下标记:

    <form id="emailForm" method="POST" action="../javascript/email_form.php" onSubmit="return validateForm();">
        <label id="emailSubjectLabel">Email Subject*:</label><input class="form" title="Email Subject" type="text" name="subject" id="emailSubject"><br>
        <label id="nameLabel">Your Name*:</label><input class="form" title="Your Name" type="text" name="name" id="yourName"><br>
        <label id="emailLabel">Your Email:</label><input class="form" title="Your Email Address" type="text" name="email" id="yourEmail"><br>
        <label id="messageLabel">Your Message*:</label>
        <textarea class="form" title="Write Something..." name="message" id="message" cols="40" rows="5"></textarea>
        <input class="button" type="submit" value="Submit">
        <p class="error">* required.</p>
    </form> 

我的 CSS 有一大堆代码,但它有关于使表单不可见的问题:

    #emailForm, #javaText {
        display: none;  
    }

(注意:#javaText 是屏幕上的一些文本,除非用户安装了 JavaScript,否则它也会被隐藏。它在 IE 8 中也不起作用。为简单起见,我没有提及它。)

JavaScript 看起来像这样:

    document.getElementById("emailForm").style.display = "block";
    document.getElementById("javaText").style.display = "inline";

    function validateForm() {
    //function that validates the form
    }

我已将 JavaScript 放在页面底部,希望对您有所帮助。我已经尝试在主 HTML 页面上更改内容的样式,我已经检查了我母亲的 JavaScript 并且它已启用。我只是不知道为什么它不起作用。

如果有人能告诉我我做错了什么,我将非常感激。这已经让我头痛了一个星期了。

(是的,我告诉她 IE 很糟糕,她应该使用 Chrome,但她不使用的原因是完全不同的故事......)

谢谢你的帮助。我迫不及待地想知道解决方案是什么!

4

1 回答 1

2

IE8 没有加载您的form_validation.js文件,这就是它没有在该文件中运行您的初始化代码的原因。

您需要将脚本标签上的类型更改为type="text/javascript"或完全删除该类型。你有type="application/javascript"哪个是不正确的。

经过进一步探索,请参阅为什么 IE8 无法识别脚本标签中的 type="application/javascript"?进行更多讨论。

于 2012-08-09T05:11:03.753 回答