使用JavaScript从DOM中删除表单

使用JavaScript从DOM中删除表单,javascript,django,django-templates,Javascript,Django,Django Templates,我有三个单选按钮。。单击时的每个单选按钮都会显示一个独立的窗体。当我单击单选按钮时,我需要从DOM中删除表单。还有第三个还没有准备好。当我单击第一个单选按钮时,只显示它的表单,其他两个从DOM中删除。其他的也一样。 我对JavaScript不是很了解 Html: 如果无法更改DOM元素并在其中添加类,我的答案是将事件侦听器附加到每个按钮: 'use strict'; var button1 = document.getElementById('toggle-tab1'), but

我有三个单选按钮。。单击时的每个单选按钮都会显示一个独立的窗体。当我单击单选按钮时,我需要从DOM中删除表单。还有第三个还没有准备好。当我单击第一个单选按钮时,只显示它的表单,其他两个从DOM中删除。其他的也一样。 我对JavaScript不是很了解

Html:


如果无法更改DOM元素并在其中添加类,我的答案是将事件侦听器附加到每个按钮:

'use strict';    
var button1 = document.getElementById('toggle-tab1'),
    button2 = document.getElementById('toggle-tab2'),
    button3 = document.getElementById('toggle-tab3');

button1.addEventListener('click', function () {
   // Code that takes it away (hide DOM elements or whatever you need)
});
另一方面,更好的方法是向所有无线电输入添加一个函数,然后根据输入无线电的ID或值,您可以更改行为:

<input type="radio" name="tabs" onclick="handleClick(this)" value="first" id="toggle-tab1" checked="checked" />
这应该能奏效

<form action="{% url "backtest" %}" method='POST' role='form' id='form'>
                  {% csrf_token %}

                <div id="tabs">


                 <input type="radio" name="tabs" value="first" id="toggle-tab1"  checked="checked" />
                 <label for="toggle-tab1">Long</label>

                 <input type="radio" name="tabs" value="second" id="toggle-tab2"     />
                 <label for="toggle-tab2">Short</label>

                 <input type="radio" name="tabs" value="third" id="toggle-tab3"   />
                 <label for="toggle-tab3">Long and Short</label>
                 <div id="tab1" class="tab"  >

                    <!-- first form will show when page load -->
                     <fieldset id="first" class="toggle">
                     {% include 'tags/parameters_form.html' %}
                     </fieldset>
                    <fieldset disabled id="second" class="toggle">
                          {% include 'tags/parameters_form.html' %}
                     </fieldset>
                     <fieldset disabled id="third" class="toggle">
                         {% include 'tags/parameters_form.html' %}
                     </fieldset>
      .....
当您在fieldset中添加disabled attr时,fieldset内部输入字段数据将不会以表单形式发布,这意味着如果字段具有disabled属性,则该字段将不会在fieldset标记中工作。所以,您可以在每个条件中显示特定的表单,并在字段集标记中添加属性disable,内部字段数据将不会发布


了解

问题通过以下方式解决:

                 <input type="radio" name="tabs"  value="first" id="toggle-tab1"  {% if strategy == 'l' %} checked="checked"{% endif %} />
                 <label for="toggle-tab1">Long</label>

                 <input type="radio" name="tabs"   value="second" id="toggle-tab2" {% if strategy == 's' %} checked="checked" {% endif %}  />
                 <label for="toggle-tab2">Short</label>



                 <div id="tab1" class="tab"  >

        <form action="{% url "backtest" %}" method='POST' role='form' id='form'>
             {% csrf_token %}
             <input type="hidden" name="tabs"  value="first" id="toggle-tab1"  checked="checked" />

你试过JS吗?展示你的尝试。可能您需要var radio=document.getElementById'toggle-tab3'之类的东西;radio.onclick=函数{/*从DOM中删除元素*/};或者使用jQuery$'toggle-tab3'。在'click'上,函数{/*从DOM*/}中删除元素;您可能需要学习基本的javascript教程,或者在Neeraj,您的代码以另一种形式对我很有用。。但现在我需要在单击单选按钮时完全删除旧表单。你们有什么想法吗?你们可以把表单html代码保存在js变量中,并在条件中加入一些逻辑。若选中了单选,则将变量html代码呈现到页面中;若未选中,则从页面中删除html代码。
    function onclick(e){
        var tab = document.getElementById('toggle-tab1');
        tab.style.visibility = "hidden";
    }

button1.addEventListener('click', onclick(e))
<form action="{% url "backtest" %}" method='POST' role='form' id='form'>
                  {% csrf_token %}

                <div id="tabs">


                 <input type="radio" name="tabs" value="first" id="toggle-tab1"  checked="checked" />
                 <label for="toggle-tab1">Long</label>

                 <input type="radio" name="tabs" value="second" id="toggle-tab2"     />
                 <label for="toggle-tab2">Short</label>

                 <input type="radio" name="tabs" value="third" id="toggle-tab3"   />
                 <label for="toggle-tab3">Long and Short</label>
                 <div id="tab1" class="tab"  >

                    <!-- first form will show when page load -->
                     <fieldset id="first" class="toggle">
                     {% include 'tags/parameters_form.html' %}
                     </fieldset>
                    <fieldset disabled id="second" class="toggle">
                          {% include 'tags/parameters_form.html' %}
                     </fieldset>
                     <fieldset disabled id="third" class="toggle">
                         {% include 'tags/parameters_form.html' %}
                     </fieldset>
      .....
$('[name="tabs"]').click(function(){
  $('.toggle').prop("disabled", true);
  var val = $(this).val()
  $('#'+val).prop('disabled', false);
});
                 <input type="radio" name="tabs"  value="first" id="toggle-tab1"  {% if strategy == 'l' %} checked="checked"{% endif %} />
                 <label for="toggle-tab1">Long</label>

                 <input type="radio" name="tabs"   value="second" id="toggle-tab2" {% if strategy == 's' %} checked="checked" {% endif %}  />
                 <label for="toggle-tab2">Short</label>



                 <div id="tab1" class="tab"  >

        <form action="{% url "backtest" %}" method='POST' role='form' id='form'>
             {% csrf_token %}
             <input type="hidden" name="tabs"  value="first" id="toggle-tab1"  checked="checked" />