javascript - 如何动态切换表单可见性?

标签 javascript jquery html css forms

我有一个页面,用户可以在其中动态创建新表单。为每个新的表单按钮创建。默认情况下隐藏表单。我需要在单击该按钮时切换表单可见性。现在我正在使用下面的 javascript 代码及其工作

 $(document).ready(function(){
        $("#button1").click(function(){
            $("#1").css({"display":"block"});
            $("#2").css({"display":"none"});
            $("#3").css({"display":"none"});

        });
        $("#button2").click(function(){
            $("#2").css({"display":"block"});
            $("#1").css({"display":"none"});
            $("#3").css({"display":"none"});
        });
       ...

现在,当用户创建表单时,我手动修改 javascript,但问题是我现在的表单太多了,而且我还有更多。 我需要解决方案来绑定(bind)表单按钮并切换其可见性。任何建议表示赞赏。 编辑 我实际使用的代码:

while ($row = $result9->fetch_assoc()) 
        {
            echo "<input class='btn btn-default' type='button' id='".$row['o_ime']."'  name='button' value='".$row['o_ime']."'>";
        }
echo "<form class='form-inline' role='form' name='$i' id='$i' style='display:none' action='naruci.php' method='POST' onsubmit='return validateForm()'>";
form elements
echo "</form>";

最佳答案

首先,您的 DOM 中不能有相同的 ID。

因此,使用类代替 ID。并使用 jquery's class selector .

所以要捕获事件,只需使用类选择器即可。

并且还使用隐藏和显示 jquery API 来 show/hide元素。

 $(".new-btn").click(function(){
       $("form").hide(); // close all forms
       $("this").closest("form").show(); // show parent form
    });

接下来我注意到,对于动态元素,它不能被普通的点击事件捕获。在 API 上使用 jquery。

$(".new-btn").on('click', function(){
    $("form").hide(); // close all forms
    $("this").closest("form_").show(); // show parent form
                                       // This is the reason it is not working because I forgot the underscore
});

更新: 它应该看起来像这样:

while ($row = $result9->fetch_assoc()) 
{
    echo "<input class='btn btn-default' type='button' id='".$row['o_ime']."'  name='button' value='".$row['o_ime']."'>";

    // We changed the form ID in this section   
    echo "<form class='form-inline' role='form' name='$i' id='form_".$row['o_ime']."' style='display:none' action='naruci.php' method='POST' onsubmit='return validateForm()'>";
    form elements
    echo "</form>";
}

在我的查询中,我将创建一个事件来捕获我的按钮点击:

$('.btn').on('click', function(){ // Listen all click events of buttons with class `btn`
    var id = $(this).attr('id');  // Get ID of focus button
    var formName = 'form' + id;   // Append form string in the id to match form's ID

    $('form').hide();             // Hide all forms
    $('#' + formName).show();     // Show exact form
});

关于javascript - 如何动态切换表单可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38496132/

相关文章:

javascript - 如何使图像成为可拖动的html

javascript - 除非清除缓存,否则 Web Worker 不会在 IE 中启动

javascript - Node JS函数执行顺序

javascript - Vis.js:突出显示选定的节点并使其他节点变灰

javascript - 将 CSS 样式表与 Javascript .innerHTML 结合使用

javascript - 改变动画速度

javascript - 如何在 JavaScript/jQuery 中创建一个动态的 SELECT 下拉列表?

jquery - 当鼠标离开触发器并向下滑动内容时,如何对向下滑动的内容进行编码以向上滑动?

javascript - 为什么我只收到来自以下 JavaScript 的单个警报?

html - CSS 表格 100% 宽度,td 宽度