我之前从未这样做过,所以如果我没有充分描述我的问题或者没有使用所有正确的语法,我道歉。
我在网站上的内容是电子邮件表格。用户可以键入消息,以及他们的姓名和其他一些数据。一旦他们填写完表格,他们就可以提交,然后转到我的电子邮箱,一切都很顺利。因为表单中包含JavaScript,所以我自动将其隐藏在CSS中,然后通过JavaScript将其显示出来。这样,如果用户关闭了JavaScript,则表单不会出现。
它很棒。我认为它也表现得很好。我在所有本地测试浏览器(Chrome 21,FF 14,IE 9,Opera 12和Safari 5)以及IE浏览器8,7和6的Adobe浏览器实验室中进行了检查。在所有这些浏览器中,它看起来很棒。我甚至在我的Android手机和我女朋友的黑莓手机上检查了它。看起来很好。
直到我在妈妈的计算机上使用IE 8测试它。虽然在Adobe Browserlab中它表示表单显示,但在真实的测试中表单没有显示。
您可以自己测试here。
问题在于表单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,但她不这样做的原因完全不同......)
感谢您的帮助。我迫不及待地想知道解决方案是什么!
答案 0 :(得分:2)
IE8未加载form_validation.js
文件,这就是为什么它没有在该文件中运行初始化代码。
您需要将脚本代码的类型更改为type="text/javascript"
或完全删除该类型。您的type="application/javascript"
不正确。
经过进一步探索后,请参阅Why doesn't IE8 recognize type="application/javascript" in a script tag?以获取更多讨论。