再次单击按钮使字段重置

Posted

技术标签:

【中文标题】再次单击按钮使字段重置【英文标题】:clicking the button again making the field reset 【发布时间】:2016-11-03 13:36:07 【问题描述】:

当我单击添加按钮时,它会使先前的值消失。 例如,如果我第一次单击添加并在第一个输入框中输入值。然后单击添加按钮,它使以前的值从输入框中消失

  function addInput(event) 
    var field =
      '<div class="form-group"><input type="text" class="form-control" name="selected_text" placeholder="Selected Text"></div>' +
      '<div class="form-group"><input type="text" class="form-control" name="selected_route_url" placeholder="Route Url for selected text"></div>' +
      '<div class="form-group"><input type="text" class="form-control" name="unselected_text" placeholder="UnSelected Text"></div>' +
      '<div class="form-group"><input type="text" class="form-control" name="unselected_route_url" placeholder="Route Url for unselected text"></div>'
    document.getElementById('inputField').innerhtml += field;
    event.preventDefault();
  
<div class="form-group">
    <a class="btn btn-primary pull-left" onclick="addInput(event)">Add</a>
</div>
<div id="inputField" style="background-color:#eceff1;">
</div>

【问题讨论】:

【参考方案1】:

向innerHTML 添加元素会预先重新加载整个元素。这就是值被重置的原因。

您可以尝试使用insertAdjacentHTML 函数。那么这一行

document.getElementById('inputField').innerHTML += field;

会变成这样

document.getElementById('inputField').insertAdjacentHTML('beforeend', field);

片段:

  function addInput(event) 
    var field =
      '<div class="form-group"><input type="text" class="form-control" name="selected_text" placeholder="Selected Text"></div>' +
      '<div class="form-group"><input type="text" class="form-control" name="selected_route_url" placeholder="Route Url for selected text"></div>' +
      '<div class="form-group"><input type="text" class="form-control" name="unselected_text" placeholder="UnSelected Text"></div>' +
      '<div class="form-group"><input type="text" class="form-control" name="unselected_route_url" placeholder="Route Url for unselected text"></div>'
    document.getElementById('inputField').insertAdjacentHTML('beforeend', field);
    event.preventDefault();
  
<div class="form-group">
    <a class="btn btn-primary pull-left" onclick="addInput(event)">Add</a>
</div>
<div id="inputField" style="background-color:#eceff1;">
</div>

来源:this similar answer

【讨论】:

【参考方案2】:

我将程序完全转换为 jquery 及其工作..

 $("#link").click(function() 
   var field =
     '<div class="form-group"><input type="text" class="form-control" name="selected_text" placeholder="Selected Text"></div>' +
     '<div class="form-group"><input type="text" class="form-control" name="selected_route_url" placeholder="Route Url for selected text"></div>' +
     '<div class="form-group"><input type="text" class="form-control" name="unselected_text" placeholder="UnSelected Text"></div>' +
     '<div class="form-group"><input type="text" class="form-control" name="unselected_route_url" placeholder="Route Url for unselected text"></div>';
   $('#inputField').append(field);
   event.preventDefault();

 );

HTML

<div class="form-group">
  <a class="btn btn-primary pull-left" id="link">Add</a>
</div>
<div id="inputField" style="background-color:#eceff1;">
</div>

Fiddle

【讨论】:

以上是关于再次单击按钮使字段重置的主要内容,如果未能解决你的问题,请参考以下文章

单击发送消息后如何重置输入字段

ExtJS 存储/网格重置

在列命令按钮重置中合并单元格

单击R Shiny中的按钮后将输入字段重置为null

Kendo UI:单击按钮后将网格数据重置为第一页

每当单击按钮时如何重置计时器