У меня есть 2 функции, которые делают ссылки меню активными/неактивными:
function disableCtrl() {
echo 'style="background: #999999;" onclick="return false;"';
}
function enableCtrl() {
echo ' ';
}
Я использую их следующим образом:
<li><a href="#" <?php if (@$_POST['submit']){disableCtrl();} if (@$_GET['guest'] == "add") {enableCtrl();} ?> >MenuButton</a></span></li>
Единственная проблема, с которой я столкнулся, заключается в том, что ссылки по умолчанию должны быть отключены по умолчанию (при загрузке страницы).
Когда я попытался написать <?php disableCtrl(); if (@$_POST['submit'])...
<?php disableCtrl(); if (@$_POST['submit'])...
, кнопка стала отключенной.
Есть ли способ заставить его работать, может быть, с JavaScript или что-то еще?
вам нужно поставить "гостевой" чек, как и режим по умолчанию (отключен), как и еще.
<li><a href="#" <?php if ($_GET['guest']== "add"){enableCtrl();} else {disableCtrl();} ?>>MenuButton</a></li>
Или с ternairy (= короткий, если /else-> [условие? IfTrue: ifFalse])
<li><a href="#" <?php $_GET['guest']=="add" ? enableCtrl() : disableCtrl() ?>>MenuButton</a></li>
В сочетании с отключенными (что сделано для этой точной ситуации):
<li><a href="#" <?=($_GET['guest']=="add" ? 'disabled="disabled"' : '')?>>MenuButton</a></li>
Имейте в виду, что php на стороне сервера, поэтому вы можете использовать printf, чтобы разместить свой javascript на своей странице.
printf("<script>Here is my javascript code</script>");
Я делаю это много с картографическими услугами. Например, чтение местоположений из базы данных и создание маркеров:
public function MarkerGoogle($s)
{
$str = sprintf("\r\n var amkr%d = new google.maps.Marker();\r\n", $s);
// More php code here …
Если вы хотите, чтобы что-то изменилось, скажем, при каждой загрузке страницы, используйте серверную технологию, такую как php. Если вы хотите, чтобы он менялся при загрузке одной страницы, т.е. в ответ на взаимодействие с пользователем используйте клиентскую технологию Ie JavaScript.
Чтобы попытаться ответить на исходный вопрос или, по крайней мере, дать вам несколько указателей, вам нужно что-то вроде:
<ul id="menu" style="display: none;"><li><a href="">...</a></li>...</ul>
<a id="btn" href="#">disable menu</a>
<script>
document.getElementById('btn').addEventListener('click', function() {
document.getElementById('menu').setAttribute('style', 'display: block');
}
</script>
Это не идеально (на практике, с одной стороны, вы не хотите просто указывать свою ссылку на "#", поскольку это ничего не сделает для тех, у кого отключен javascript), но это указатель в правильном направлении. Эквивалент jQuery будет примерно таким:
<script>
$('#btn').click(function() { $('#menu').hide(); });</script>
</script>
если это более привлекательно, проверьте jQuery.