在页面加载时隐藏文本输入字段?

时间:2012-02-07 16:14:17

标签: php javascript input textbox

如果可能的话,它应该是非常简单的东西。无论如何这样做?似乎无法在网上找到它。

我旁边有一组复选框和文本框。如果我检查它,我只想要出现文本框。我的ID是动态使用PHP所以我不能使用循环中的JavaScript。

下面的代码是测试它是否可以隐藏。我可以隐藏点击,但我希望反过来做。

while($row = mysql_fetch_array($result)){
                echo "<tr>";
                echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='hidden';\"/></td>";
                echo "<td>" . $row['type'] . "</td>
                <td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\"></td><br />
                            </tr>";
                $TBCounter++;
            }

2 个答案:

答案 0 :(得分:1)

您可以使用Javascript&#39; window.onload在每次加载页面时生成一些内容。


在你的循环之前......

$elementsToHide = array();

在你的循环中,把这个

$elementsToHide[] = $TBCounter;

然后让你的脚本(在循环之后)看起来像这样

<script type="text/javascript">
    window.onload = function ()
    {
        <?php foreach ($elementsToHide AS $TBCounter): ?>
        document.getElementById('TBox <?php echo $TBCounter ?>').style.visibility = 'hidden';
        <?php endforeach ?>
    }
</script>

答案 1 :(得分:1)

可能有更好的(读取:更少侵入性)方式,但最简单的方法可能是将元素的可见性设置为隐藏,并更改您的Javascript以使其可见。

因此,将style="visibility:hidden;"添加到文本框元素并更改javascript以设置.style.visibility = 'visible'

编辑您的代码,即:

while($row = mysql_fetch_array($result)){
    echo "<tr>";
    echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='visible';\"/></td>";
    echo "<td>" . $row['type'] . "</td>
    <td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\" style=\"visibility:hidden\"></td><br />
                </tr>";
    $TBCounter++;
}

根据Joe的评论,对于禁用javascript的用户,如果页面加载时隐藏了该字段,则不起作用。解决此问题的一种方法是通过输出内联脚本标记在javascript中设置字段不可见。

while($row = mysql_fetch_array($result)){
    echo "<tr>";
    echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='visible';\"/></td>";
    echo "<td>" . $row['type'] . "</td>
    <td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\"></td><br />
                </tr>
    <script>document.getElementById('TBox $TBCounter').style.visibility='hidden';</script>";
    $TBCounter++;
}

第三种(更好)替代方案可以是为文本框设置一个类,并使用javascript在页面加载时隐藏该类的所有元素。