Вызов функции JavaScript из PHP эхо внутри переключателя - PullRequest
3 голосов
/ 08 июля 2011

У меня есть несколько переключателей, которые onClick будет показывать или скрывать Div:

Показать Div:

<input type="radio" name="con[4]" value="1" onclick="toggleLayer4(this.checked);" id="con4" />

СкрытьDiv:

<input type="radio" name="con[4]" value="0" onclick="toggleLayer4(!this.checked);" checked="checked" id="con4" />

JavaScript:

function toggleLayer4(val)
        {
            if(val == '1' || val === true)
            {
                document.getElementById('con4').checked = true;
                document.getElementById('con4PSTN').style.display = 'block';
            }
            else if(val == '0' || val === false)
            {
                document.getElementById('con4').checked = false;
                document.getElementById('con4PSTN').style.display = 'none';
            }
        }

Теперь проблема, когда вызывается паг, я могу установить переключатель, какэто:

<input type="radio" name="con[4]" value="1" onclick="toggleLayer4(this.checked);" <? if ($conn_count[3] == 1){echo "checked=\"checked\"";}?> id="con4" />

Но мне нужно отменить функцию JavaScript, чтобы показать div, если переключатель установлен, я попытался отобразить toggleLayer4(this.checked); в PHP-выражении if внутри тегов, однако этопросто кажется, чтобы вернуть текст в html ??

Должен быть способ, не очень разбирающийся в JS.

Cheers, B.

Ответы [ 3 ]

1 голос
/ 08 июля 2011

Вот простой ненавязчивый javascript для вас, который сэкономит вам некоторую работу - обратите внимание, что на радио больше нет обработчиков событий.

Я дал им уникальные идентификаторы, что является обязательным.

Если вам когда-нибудь понадобится использовать jQuery для других вещей, этот скрипт может быть немного более элегантным.

Я предполагаю

<input type="radio" name="con[1]" value="1" id="con1_1" />
<input type="radio" name="con[1]" value="0" id="con1_0" />
<input type="radio" name="con[2]" value="1" id="con2_1" />
<input type="radio" name="con[2]" value="0" id="con2_0" />
<input type="radio" name="con[3]" value="1" id="con3_1" />
<input type="radio" name="con[3]" value="0" id="con3_0" />
<input type="radio" name="con[4]" value="1" id="con4_1" />
<input type="radio" name="con[4]" value="0" id="con4_0" />

и соответствующий объект имеет conxPSTN, где x - это число в кон [ x ]

window.onload=function() {
  var conLength = <?php echo count($con); ?>;
  for (var i=1;i<=conLength;i++) {
    var cons = document.getElementsByName("con["+i+"]");
    for (var j=0;j<cons.length;j++) {
      cons[j].onclick=function() {
        var id = this.id.split("_")[0];
        document.getElementById(id+"PSTN").style.display = (this.value==1)?"block":"none"
      }
      if (cons[j].checked) cons[j].click();
    }
  }
}
0 голосов
/ 08 июля 2011
   <input type="radio" name="con[4]" value="0" onclick="toggleLayer4(0);" checked="checked" id="con4" />


   <input type="radio" name="con[4]" value="1" onclick="toggleLayer4(1);" checked="checked" id="con4" />
 function toggleLayer4(val)
    {
    if(val){
     document.getElementById('con4PSTN').style.display = 'block';}
    else{
     document.getElementById('con4PSTN').style.display = 'none';
    }
    }
0 голосов
/ 08 июля 2011

Если вы повторяете с php, то вам следует делать как

echo "<script type='text/javascript'>toggleLayer4(this.checked);</script>";

Но вы не можете использовать this там.Вам необходимо получить значение переключателя вручную и передать его

РЕДАКТИРОВАТЬ

Это тот случай, когда вы хотите явно вызвать функцию в некоторой частикод и когда код php не с тегами <script>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...