如何重置输入字段? jQuery

Posted

技术标签:

【中文标题】如何重置输入字段? jQuery【英文标题】:How to reset input field? jQuery 【发布时间】:2016-05-31 05:51:23 【问题描述】:

我已经阅读了几篇帖子,包括this 和this,但我似乎无法在提交后清除输入字段。最基本/最基本的方法是什么?

目前我有这个:

$(document).ready(function()
    $('form[name=checkListForm]').on('submit', function() 
          // prevent the form from submitting
          event.preventDefault();
          var toAdd = $(this).find('input[name=checkListItem]').val();
          $('.list').append("<div class='item'>" + toAdd + "</div>")
          $('input[name=checkListItem').reset();
        );
);

我的 html 是:

<!DOCTYPE html>
<html >
  <head>
    <meta charset="UTF-8">  
    <link rel="stylesheet" href="stylesheet.css">     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
    <script type="text/javascript" src="script.js"></script>
  </head>
  <body>
    <h2>To Do</h2>
    <form name="checkListForm">
      <input type="text" name="checkListItem" />
      <button type="submit" id="button">Add!</button>
    </form>
    <br/>
    <div class="list"></div>
  </body>
</html>

【问题讨论】:

单行代码处理所有字段$(formselector)[0].reset(); 【参考方案1】:

不用重置,只需使用这段代码为输入字段设置一个空白值:

$('input[name=checkListItem').val('');

为了以特定形式重置所有输入,您还可以使用以下代码(使用 :input 选择器):

$('form :input').val('');

【讨论】:

谢谢,成功了。作为一个附带问题,你知道为什么选择器应该是input[name=checkListItem 而不是form[name=checkListForm吗? @AlanH:因为您想将输入的值设置为空白,而不是表单。 @AlanH :那是因为 input 选择器基本上选择了一个表单控件,并且它有一个可以设置的值,而 $('form') 基本上意味着您选择的是 html 元素本身而不是表单控件,因为 $('form') 没有与 input 选择器不同的 value 属性,请参阅我对答案的最新编辑。 当您使用element[attribute=value] 过滤元素/节点时 - 即它会选择所有类型为element 然后从那些中,只有[attribute=value] 所以form[name] 找到所有具有名称属性的表单。如果你做了form [name](即带空格),那么它会在表单中找到所有具有 name 属性的元素。 $('input[name=checkListItem]').val('');你错过了 ']' ;)【参考方案2】:

这应该可行,(我自己测试过)。

$(document).ready(function()
    $('form[name=checkListForm]').on('submit', function() 
          //other code
          $('input[name=checkListItem]').val("")
        );
);

【讨论】:

【参考方案3】:

这个对我有用;很少修改。我使用function(e)e.preventDefault() 并使用$('input[name=checkListItem').val(''); 而不是reset()

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>

    $(document).ready(function()
        $('form[name=checkListForm]').on('submit', function(e) 
              // prevent the form from submitting
              e.preventDefault();
              var toAdd = $(this).find('input[name=checkListItem]').val();
              $('.list').append("<div class='item'>" + toAdd + "</div>")


              $('input[name=checkListItem').val('');
            );
    );
 </script>

<h2>To Do</h2>
<form name="checkListForm">
  <input type="text" name="checkListItem" />
  <button type="submit" id="button">Add!</button>
</form>
<br/>
<div class="list"></div>

【讨论】:

【参考方案4】:

提交后再写。

document.getElementById("myform").reset();

【讨论】:

【参考方案5】:

最后,这对我有用。

$(document).ready(function()
$('#myForm').on('submit', function() 
$('#checkListItem').val('');
);
);
        

【讨论】:

以上是关于如何重置输入字段? jQuery的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Javascript/jQuery 中重置超时?

如何使用 JQuery 重置单个输入元素

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

如何使用 jquery 选择所有输入,不是提交、重置或按钮?

Angular:如何重置 matChipList 输入字段和 Google Recaptcha?

如何将 Escape 上的输入字段重置为以前的值