我的Optin表单在Internet Explorer中不起作用,但在Firefox中工作正常

时间:2010-05-25 23:54:30

标签: javascript dom internet-explorer

我的optin表格有以下代码:

<script language="JavaScript">
function checkSub() {
    if (document.signup.email.value.indexOf('@', 0) == -1) {
        alert("Please fill in your valid Email address.\nYour email should be in the following format: email@address.com");
        document.signup.email.focus();
        return false
    }

    else if (!document.signup.terms.checked) {
        alert("You must read and agree to the terms");
        document.signup.terms.focus();
        return false
    }

    else {
        switch (document.signup.extra1.value) {
        case "Platinum":
            answer = confirm("By clicking OK you confirm that you have\nalready entered  
                     the World Cup Giveaway\nas a Platinum upgrade contributor.\n\nIf you have 
                     not yet entered the giveaway\nclick Cancel.\n\nYou can enter using the 
                     link at the\nbottom of the page.\n\nIf you have already entered the 
                     giveaway\nusing a link other than my invitation link\nyou are not 
                     eligible for this offer.");
            if (!answer) {
                return false
            }
            break;
        case "Gold":
            answer = confirm("By clicking OK you confirm that you have\nalready entered  
                    the World Cup Giveaway\nas a Gold upgrade contributor.\n\nIf you have not 
                    yet entered the giveaway\nclick Cancel.\n\nYou can enter using the link
                    at the\nbottom of the page.  \n\nIf you have already entered the
                    giveaway\nusing a link other than my invitation link\nyou are not eligible 
                    for this offer.");
            if (!answer) {
                return false
            }
            break;


        default:
            alert("You must sign up as a contributor to the \nWorld Cup Giveaway to take 
                advantage of \nthis offer.\n\nPlease click the link at the bottom of this 
                \npage or at the blog post mentioned below \nto sign up.\n\nIf you have 
                already signed up using \nthis link, please select the upgrade level\nyou 
                chose on signup or select \"Free\" if \nyou signed up as a free 
                contributor.\n\nIf you have already entered the giveaway\nusing a link other 
                than my invitation link\nyou are not eligible for this offer.\n\nNote:  This 
                page may not function properly\nif viewed in languages other than English.");
            return false
        }
    }
}
</script>

和HTML

<form action="http://ebizac.com/ar/optin.php" method="post" name="signup"
onsubmit="return checkSub()">
    <input type=hidden name="action" value="addlead">
    <input type=hidden name="member" value="2315">
    <input type=hidden name="auto" value="7584">
    <input type=hidden name="thankyou" value="http://plr.forinternetnewbies.com/Offer1">
    <input type=hidden name="resubsetting" value="Y">
    <input type=hidden name="resubredirect" value="">
    <input type=hidden name="invalid_redirect" value="">
    <div style="padding:0 0 0 10px;">
        <table border=0 cellspacing=0 cellpadding=2>
            <tr>
                <td class="label">
                    <font size="2" face="arial, verdana">
                        Name:
                    </font>
                </td>
                <td>
                    <input type=text size=20 name="fname">
                </td>
            </tr>
            <tr>
                <td class="label" width="150">
                    <font size="2" face="arial, verdana">
                        Email address:
                    </font>
                    </span>
                </td>
                <td>
                    <input type=text size=20 name="email">
                </td>
            </tr>
            <tr>
                <td class="label">
                    <font size="2" face="arial, verdana">
                        Upgrade Level:
                    </font>
                </td>
                <td>
                    <select size=1 name="extra1">
                        <option>
                            Haven't Joined Yet
                        </option>
                        <option>
                            Platinum
                        </option>
                        <option>
                            Gold
                        </option>
                        <option>
                            Silver
                        </option>
                        <option>
                            Free
                        </option>
                </td>
            </tr>
            <tr>
                <td>
                </td>
                <td align=center>
                    <input type="checkbox" name="terms" value="agree">
                    I agree to the terms as described on the
                    <a href="http://short9.com/blog0522-sp" target="_blank">blog post</a>
                </td>
            </tr>
            <tr>
                <td>
                </td>
                <td align=center>
                    <input type="submit" value="Contribute Now">
                </td>
            </tr>
        </table>
    </div>
</form>

一切都符合我对Firefox的期望,但在Internet Explorer中,switch语句始终是默认情况。我在默认情况下使用额外警报(signup.extra1.value)进行测试,并显示空字符串。

这可能是什么问题?

4 个答案:

答案 0 :(得分:0)

不知道是不是原因(现在无法测试),但您可能想尝试更正<script>元素:

<script type="text/javascript" charset="utf-8">

答案 1 :(得分:0)

我不知道究竟是什么问题,但是当IE提出JavaScript问题时,我会使用内置的调试器。 (IE8)我会把

debugger;
在您切换之前

并使用Watch窗口查找

的值
document.signup.extra1.value

及其所有作品。

答案 2 :(得分:0)

您的选项标签需要具有“值”属性。你应该检查那些。

<option value="1">Gold</option>
<option value="2">Platinum</option>

然后在你的剧本中:

switch(document.form_name.select_name.value) {
   case '1': alert("Gold"); break;
   case '2': alert("Platinum"); break;
}

答案 3 :(得分:0)

您很可能遇到与Javascript returns Nan in IE, FF ok

相同的问题

首先,将language="JavaScript"替换为type="text/javascript"。第一个是在很久以前被弃用的。

其次,不要以这种方式访问​​表单元素,因为它非常脆弱 使用

访问表单元素可能会更好
  • 给出元素id并使用document.getElementById(“foo”)
  • 文档。形式 .signup。元素 .extra1

这两种方法都比你现在做的更好。