在单选按钮内从PHP回调调用JavaScript函数

时间:2011-07-08 08:21:53

标签: php javascript radio-button

我有一系列单选按钮,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';
            }
        }

现在问题是,当调用pag时,我可以像这样检查单选按钮:

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

但是如果单选按钮被选中,我需要调用JavaScript函数来显示div,我试图在标记内部的PHP if语句中回显toggleLayer4(this.checked);,但这似乎只是在重新生成文本在html ??

必须有一种方法,而不是精通JS。

干杯, 乙

3 个答案:

答案 0 :(得分:1)

这是一个简单的不引人注目的javascript,它可以为您节省一些工作 - 请注意,无线电上没有事件处理程序。

我给了他们唯一的ID,这是强制性的。

如果你需要将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 是con [ 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();
    }
  }
}

答案 1 :(得分:0)

如果你是从php回应那么你应该这样做

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

但你不能在那里使用this。你需要手动获取单选按钮的值n传递它

修改

如果你想在代码的某些部分显式调用函数,并且php代码且带有<script>标记,则会出现这种情况。

答案 2 :(得分:0)

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