【问题标题】:Remove Form Field With Javascript使用 Javascript 删除表单字段
【发布时间】:2017-03-15 20:31:58
【问题描述】:

所以我浏览了该网站,但没有找到我特定问题的答案。我对编写代码非常陌生,并且正在尝试弄清楚如何在使用 Javascript 添加表单字段后删除它。这是代码。我非常感谢反馈/解决方案。

var counter = 1;
var limit = 1000;
function addInput(Favorites){
       if (counter == limit)  {
            alert("You have reached the limit of adding " + counter + " inputs");
       }
       else {
            var newdiv = document.createElement('div');
            newdiv.innerHTML = "<br>Favorite " + (counter + 1) + "<input type='text' name='Favorites[]'><input type ='button' value ='Remove'>";
            document.getElementById(Favorites).appendChild(newdiv);
            counter++;

      }

      function removeInput(newdiv){
          document.getElementById('Favorites').removeChild(newdiv);
          counter - 1;
      }
}
  <form>
       <div id="Favorites">
            Favorite 1<input type="text" name="Favorites[]">
       </div>
      <input type="button" value="Add New Favorite" onClick="addInput('Favorites');">
      <input type = "button" value = "Save Changes">
</form>

【问题讨论】:

  • 郑重声明counter - 1 可能没有按照您的想法行事。尝试使用counter -= 1 来实际更新您的变量,否则counter-- 也可以使用
  • 主要问题是您的“删除”按钮没有与之关联的事件。

标签: javascript forms appendchild removechild


【解决方案1】:

您的代码中存在各种问题,因此我对其进行了一些修改。所以使用下面的js代码

var counter = 1;
var limit = 1000;
function addInput(){
   if (counter == limit)  {
        alert("You have reached the limit of adding " + counter + " inputs");
   }
   else {
            var newdiv = document.createElement('div');
            newdiv.innerHTML = " <div class='inputElement'>Favorite " + (counter + 1) + "<input type='text' name='Favorites[]'><input type ='button' value ='Remove' onClick='removeInput(this)'></div>";
            document.getElementById("Favorites").appendChild(newdiv);
            counter++;
     }
}

function removeInput(removeLink){
   var inputElement = removeLink.parentNode;
  inputElement.remove();
  counter= counter - 1;  
}

在html中你可以稍微修改你的代码

 <form>
   <div id="Favorites">
     <div class='inputElement'>   
        Favorite 1<input type="text" name="Favorites[]">
     </div>  
    </div>
      <input type="button" value="Add New Favorite" onClick="addInput();">
     <input type = "button" value = "Save Changes">
</form>

在此处查看上述代码
https://jsbin.com/hizimateri/1/edit?html,js,console,output

如果您有任何问题。告诉我。

【讨论】:

  • 谢谢你,它工作得很好,有几个问题,所以我可以理解你为什么做了你所做的 1.为什么你给 removeInput 函数提供了 removelink 的参数?和 2. 向 div 标签添加类的目的是什么?
  • 答案1。这可以作为对该链接的引用。因为此页面上可能有多个“删除”链接。单击其中之一时,您希望删除该特定链接及其同级输入框(并非所有这些都来自页面)。回答 2 单击删除时 - 您必须删除该链接及其同级输入框,所以这里我使用的是父容器,所以现在我只需要删除该父 div。希望对您有所帮助!
  • 我想在代码中使用该类,但目前没有用。
  • 我做到了,但由于我的 Rep 少于 15,它不会公开显示:/
  • 因为你已经创建了嵌套的 div,你应该写 var inputElement = removeLink.parentNode.parentNode; 否则你每次删除一个空的 div (或者不创建 &lt;div class='inputElement'&gt; 并添加类到创建的元素 @ 987654326@
【解决方案2】:

也许这有帮助?在此处查看链接link

var counter = 1;
var limit = 2;

    function addInput(Favorites) {
      if (counter == limit) {
        removeInput();
        alert("You have reached the limit of adding " + counter + " inputs");
      } else {
        var newdiv = document.createElement('div');
        newdiv.innerHTML = "<br>Favorite " + (counter + 1) + "<input type='text' name='Favorites[]'><input type ='button' value ='Remove'>";
        document.getElementById(Favorites).appendChild(newdiv);
        counter++;

      }

      function removeInput() {
        var x = document.querySelector('#Favorites div:last-child');
        x.remove();
        --counter;
      }
    }

【讨论】:

  • 嘿,感谢您的回复,我正在尝试使用基本的 Javascript 来完成,我运行了您提供的代码,但它似乎没有解决我的困境:[
  • @LegendaryElite 你能检查一下codepen链接并告诉你是否是你想要的行为,拜托。
  • 行为是什么意思?
  • 你检查过codepen链接吗?当计数器进入两个时,我们会提醒并删除最后插入的输入,这就是您想要实现的目标吗?
  • 哦,不,我可能对这个问题的措辞很奇怪。我的目标是尝试让删除函数与基本的 Javascript 一起工作。就像随意动态添加和删除一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多