Условная установка функции javascript после публикации формы - PullRequest
0 голосов
/ 04 августа 2009

Извиняюсь за очень основной вопрос - готовится к ускоренному курсу в javascript! Но до этого у меня есть функция JavaScript:

 function toggle(request)

Функция просто переключает div как видимый / невидимый. Я могу вызвать нужное мне поведение из этой функции, используя событие onclick следующим образом:

<input type="radio" name="complete" value="true" id="complete_yes" 
onclick="toggle('true');"/>

Это работает нормально, но после публикации формы, при определенных условиях я хочу, чтобы переключатель автоматически выбирался, а функция javascript была автоматически установлена ​​на:

toggle('true') 

... таким образом, раскрывая содержимое div. У меня работает «проверенная» часть, но как мне сделать так, чтобы функция javascript была условно установлена ​​в true aswell?

<input type="radio" name="complete" value="true" {if $data.complete == true}checked{/if} id="complete_yes" 
onclick="toggle('true');"/>

Ответы [ 3 ]

2 голосов
/ 16 октября 2009

Решил изучить JQuery вместо этого! Синтаксис ниже обеспечивает желаемый результат и очень прост в обслуживании!

$(document).ready(function () {
 $('#complete_yes').toggle(function () {
    $('#repair_complete').removeClass('hidden');
 }, function() {
    $('#repair_complete').addClass('hidden');
});
});
1 голос
/ 04 августа 2009

Как насчет тестирования в вашей функции JS toggle, если div нужно сделать видимым или нет в зависимости от "проверенного" состояния вашего ввода?

Что-то вроде этого, я думаю:

function toggle()
{
    if (document.getElementById('YOUR_INPUT_ID').checked) {
        document.getElementById('YOUR_DIV_ID').style.display = 'block';
    } else {
        document.getElementById('YOUR_DIV_ID').style.display = 'none';
    }
}

Абсолютно не проверено, но я думаю, вы поймете :-)
(Я никогда не знаю, будет ли вход считаться «проверенным» до или после вызова функции JS onclick ... Так что вам, возможно, придется инвертировать 'block' и 'none 'настройки)

И, если у вас есть несколько входов / делений, вы можете передать их идентификаторы в качестве параметров функции toggle ...

Таким образом, вам никогда не придется беспокоиться о какой-либо «инициализации» для этой функции.


Обратите внимание, что вы также можете проверить, является ли div видимым, например:

function toggle()
{
    if (document.getElementById('YOUR_DIV_ID').style.display == 'none') {
        document.getElementById('YOUR_DIV_ID').style.display = 'block';
    } else {
        document.getElementById('YOUR_DIV_ID').style.display = 'none';
    }
}

(тоже не тестировалось)

Таким образом, ваша функция будет действительно переключать отображение div, каждый раз, когда он вызывается.

0 голосов
/ 04 августа 2009

Почему бы не сделать что-то вроде:

{if $data.complete == true}
<script type="text/javascript">toggle('true');</script>
{/if}
...