скрипт работает частично в Chrome и IE, но не в Firefox - PullRequest
1 голос
/ 08 июня 2011

Следующий код работает в Chrome и IE, но не в Firefox.

Идея состоит в том, чтобы заставить пользователей установить флажок "Согласен", прежде чем переходить по одной из возможных ссылок.

 <script type="text/javascript"> 
        function agreeCheck() 
        {

        valid = false;

        var agree = document.getElementById('agree');
            if(isAgree(agree)){
            valid= true;
            }

        return valid;
        } 

        function isAgree(elem)
        {
            if ( elem.checked == false )
                {
            Show_Stuff(agreespan, "true");
                return false;
            }
            else
            {
            Show_Stuff(agreespan, "false");
            return true;
            }
        }
        function Show_Stuff(warning,on_off)
        // Function that will swap the display/no display for
        // all content within span tags
        {

        if ((warning.style.display == "none")&&(on_off =="true"))
            {
            warning.style.display = "";
            }
        else
            {
            warning.style.display = "none";
            }


        }
</script>

    <input type="checkbox" name="agree" value="signed" id="agree">
I agree</input> <span ID="agreespan" style="display: none">
<font color="red">You must agree in order to proceed</font> 
                                    </span> 

 <button type="button" title="Proceedt" class="btn-proceed" onclick="if (agreeCheck()==true){ window.location='myURL'; } else{ return agreeCheck();}"></button>

<input type="image" src="anotherURL" title="myTitle"  onClick="return agreeCheck();"/>

Примечания:

  1. очевидно, что myURL и anotherURL фактические действительные URL
  2. нажатие на первую кнопку, когда флажок не установлен, препятствует продвижению страницы, но не отображает сообщение об ошибке в диапазоне в Chrome и IE. В Firefox он ничего не делает вне зависимости от статуса окна
  3. щелчок по ссылке на изображение (input type = "image"), когда флажок не установлен, работает хорошо в Chrome и IE, и появляется сообщение об ошибке. В Firefox ссылка идет независимо от статуса окна.
  4. Я понимаю, что это может быть написано по-другому, чтобы упростить вещи. Проблема в том, что я реализую это в Magento, где у меня есть доступ только к частям кода по отдельности, поэтому я не могу объединить части оператора If Else в отдельной функции.

Заранее благодарю за помощь!


** edit: я изменил оператор if (на одну строку раньше последнего) на

if (agree.checked ==true){ ...

это исправило проблему в chrome и IE, и теперь эти браузеры работают правильно. Firefox все еще не делает то, что я хочу, чтобы он делал

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

span_tag.style.display используется в целях макета, чтобы не скрывать и не показывать тег spanЭто не работает в вашем случае, потому что JavaScript, вероятно, ломается.Попробуйте изменить все, используя следующий код

warning.style.visibility = "hidden";
warning.style.visibility = "visible";
0 голосов
/ 08 июня 2011

Проблема в функции isAgree. Попробуйте следующее:

function isAgree(elem)
{
        if (!elem.checked == "Checked")
        {
            Show_Stuff(agreespan, "true");
            return false;
        }
        else
        {
            Show_Stuff(agreespan, "false");
            return true;
        }
}

Надеюсь, это решит проблему. Решение разрешается вокруг этого «проверенного» свойства.

...