Следующий код работает в 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();"/>
Примечания:
- очевидно, что myURL и anotherURL
фактические действительные URL
- нажатие на первую кнопку, когда флажок не установлен, препятствует продвижению страницы, но не отображает сообщение об ошибке в диапазоне в Chrome и IE. В Firefox он ничего не делает вне зависимости от статуса окна
- щелчок по ссылке на изображение (input type = "image"), когда флажок не установлен, работает хорошо в Chrome и IE, и появляется сообщение об ошибке. В Firefox ссылка идет независимо от статуса окна.
- Я понимаю, что это может быть написано по-другому, чтобы упростить вещи. Проблема в том, что я реализую это в Magento, где у меня есть доступ только к частям кода по отдельности, поэтому я не могу объединить части оператора If Else в отдельной функции.
Заранее благодарю за помощь!
** edit: я изменил оператор if (на одну строку раньше последнего) на
if (agree.checked ==true){ ...
это исправило проблему в chrome и IE, и теперь эти браузеры работают правильно. Firefox все еще не делает то, что я хочу, чтобы он делал