Моя форма Optin не работает в Internet Explorer, но отлично работает в Firefox - PullRequest
0 голосов
/ 26 мая 2010

У меня есть следующий код для моей формы 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 голосов
/ 26 мая 2010

Скорее всего, проблема та же, что и в Javascript возвращает Nan в IE, FF ok

Прежде всего, замените language="JavaScript" на type="text/javascript". Первый был устарел долгое время назад.

Во-вторых, не получайте доступ к элементам формы таким образом, поскольку они очень хрупкие Возможно, вам больше повезет с доступом к элементам форм с помощью

  • дать идентификаторы элементов и использовать document.getElementById ("foo")
  • документ. форма .signup. элементы .extra1

Оба эти подхода лучше, чем то, что вы делаете сейчас.

0 голосов
/ 26 мая 2010

Я не знаю, в чем конкретно проблема, но когда IE дает проблемы с JavaScript, я использую встроенный в него отладчик.(IE8) Я бы поставил

debugger;

прямо перед вашим переключателем и использовал бы окно Watch, чтобы найти значение

document.signup.extra1.value

и все его части.

0 голосов
/ 26 мая 2010

Ваши теги option должны иметь атрибуты "value". Вы должны проверить их.

<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;
}
0 голосов
/ 26 мая 2010

Не знаю, является ли это причиной (не могу проверить это сейчас), но вы можете попробовать исправить элемент <script>:

<script type="text/javascript" charset="utf-8">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...