在发布表单后有条件地设置javascript函数

时间:2009-08-03 21:07:41

标签: php javascript smarty

非常基本问题道歉 - 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以及?

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

3 个答案:

答案 0 :(得分:2)

决定学习jQuery!下面的语法实现了预期的结果,并且非常易于维护!

$(document).ready(function () {
 $('#complete_yes').toggle(function () {
    $('#repair_complete').removeClass('hidden');
 }, function() {
    $('#repair_complete').addClass('hidden');
});
});

答案 1 :(得分:1)

在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';
    }
}

绝对没有经过测试,但我认为你会得到这个想法:-)
(我从来不知道在onclick上JS函数之前或之后被认为是“已检查”的输入...所以你可能实际上必须反转'block'和' none'设置)<​​/ em>

并且,如果你有几个输入/ div,你可以将它们的id作为参数传递给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时,你的函数都会切换 div的显示。

答案 2 :(得分:0)

为什么不这样做:

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