如何使用jQuery用.reset()方法重置窗体

我有工作代码,可以重置我的表单时,我点击重置按钮。然而,当我的代码变长后,我意识到它不再工作了。

<div id="labels">
<table class="config">
<thead>
<tr>
<th colspan="4"; style= "padding-bottom: 20px; color:#6666FF; text-align:left; font-size: 1.5em">Control Buttons Configuration</th>
</tr>
<tr>
<th>Index</th>
<th>Switch</th>
<th>Response Number</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<form id="configform" name= "input" action="#" method="get">
<tr>
<td style="text-align: center">1</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" value="" id="number_one"></td>
<td><input style="background: white; color: black;" type="text"  id="label_one"></td>
</tr>
<tr>
<td style="text-align: center">2</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" id = "number_two" value=""></td>
<td><input style="background: white; color: black;" type="text"  id = "label_two"></td>
</tr>
<tr>
<td style="text-align: center">3</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" id="number_three" value=""></td>
<td><input style="background: white; color: black;" type="text" id="label_three"></td>
</tr>
<tr>
<td style="text-align: center">4</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" id="number_four" value=""></td>
<td><input style="background: white; color: black;" type="text" id="label_three"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" id="configsubmit" value="Submit"></td>
</tr>
<tr>
<td><input type="reset" id="configreset" value="Reset"></td>
</tr>
                  

</form>
</tbody>
</table>
            

</div>

和我的jQuery:

$('#configreset').click(function(){
$('#configform')[0].reset();
});

为了使.reset()方法工作,是否应该在代码中包含一些源代码?之前我用的是:

<script src="static/jquery.min.js"></script>
<script src="static/jquery.mobile-1.2.0.min.js"></script>

并且.reset()方法正在工作。

目前我正在使用

<script src="static/jquery-1.9.1.min.js"></script>
<script src="static/jquery-migrate-1.1.1.min.js"></script>
<script src="static/jquery.mobile-1.3.1.min.js"></script>

这可能是原因之一吗?

1071659 次浏览

http://jsfiddle.net/8zLLn/ < a href = " http://jsfiddle.net/8zLLn/ " > < / >

  $('#configreset').click(function(){
$('#configform')[0].reset();
});

把它放在JS提琴。按预期工作。

所以,上面提到的问题都不是问题。也许你的身份证有问题?点击是否实际执行?

编辑:(因为我是一个没有适当评论能力的悲伤的人)这不是你的代码直接的问题。当你把它从你当前使用的页面的上下文中取出时,它工作得很好,所以,而不是用特定的jQuery/javascript &带属性的表单数据,必须是别的东西。我开始把它周围的代码分成两半,试着找出它在哪里运行。我的意思是,为了“确定”,我想你可以……

console.log($('#configform')[0]);

在点击功能,并确保它的目标是正确的形式…

如果是的话,一定是这里没有列出的东西。

你可以尝试的一件事(如果它没有正确地瞄准它)是使用输入:“重置”而不是你正在使用的…此外,我建议,因为它不是目标,不正确的工作,以找出实际点击的目标是什么。只要打开firebug/开发者工具,随便扔进去

console.log($('#configreset'))

看看会出现什么。然后我们可以从这里开始。

您的代码应该可以工作。确保static/jquery-1.9.1.min.js存在。此外,您可以尝试恢复到static/jquery.min.js。如果这解决了问题,那么你就找到了问题所在。

重置按钮根本不需要任何脚本(或名称或id):

<input type="reset">

做完了。但如果你真的必须使用脚本,请注意每个表单控件都有一个形式属性,引用它所在的表单,所以你可以这样做:

<input type="button" onclick="this.form.reset();">

但重置按钮是更好的选择。

我终于解决问题了!! @RobG对form标签和table标签的看法是正确的。form标签应该放在表的外面。 with that,

<td><input type="reset" id="configreset" value="Reset"></td>

工作不需要jquery或其他任何东西。简单点击按钮,tadaa~整个表单重置;)精彩!

你可以像这样用id = resetform添加输入type = reset

<html>
<form>
<input type = 'reset' id = 'resetform' value = 'reset'/>
<!--Other items in the form can be placed here-->
</form>
</html>

然后在jquery中,你只需在id = resetform的元素上使用.click()函数,如下所示

<script>
$('#resetform').click();
</script>

,窗体重置 注意:你也可以用css

隐藏id = resetform的重置按钮
<style>
#resetform
{
display:none;
}
</style>

根据这个帖子在这里, jQuery没有reset()方法;但是原生JavaScript可以。因此,将jQuery元素转换为JavaScript对象可以使用:

$("#formId")[0].reset()
// or
$("#formId").get(0).reset()

我使用这个简单的代码:

//reset form
$("#mybutton").click(function(){
$("#myform").find('input:text, input:password, input:file, select, textarea').val('');
$("#myform").find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');
});

你可以尝试使用trigger() 参考链接

$('#form_id').trigger("reset");
<button type="reset">Reset</reset>

我能想到的最简单的方法就是强健。放置在表单标记内。

通过jquery函数.closest(元素)(…)

获取元素并查找孩子. xml。

最后,做所需的函数。

$("#form").closest('form').find("input[type=text], textarea").val("");

这是用普通Javascript比用jQuery更容易完成的事情之一。jQuery没有reset方法,但是HTML表单元素有,所以你可以像这样重置表单中的所有字段:

document.getElementById('configform').reset();

如果你通过jQuery(在这里的其他答案中看到:$('#configform')[0].reset()), [0]正在获取与你直接通过document.getElementById获得的相同的表单DOM元素。后一种方法更有效,也更简单(因为使用jQuery方法,您首先获得一个集合,然后必须从中获取一个元素,而使用普通Javascript,您只需直接获取元素)。

下面是Jquery的简单解决方案。它在全球都适用。看一下代码。

$('document').on("click", ".clear", function(){
$(this).closest('form').trigger("reset");
})

在需要重置按钮的每个表单中添加一个clear类。例如:

<button class="button clear" type="reset">Clear</button>

使用jQuery reset函数可以快速重置表单字段。

当你得到成功回应,然后火下面的代码。

$(selector)[0].reset();

第一行将重置表单输入

$('form#myform').trigger("reset"); //Line1
$('form#myform select').trigger("change"); //Line2

第二个将重置select2

可选:如果你有不同类型的事件注册,你可以使用这个

$('form#myform select, form input[type=checkbox]').trigger("change"); //Line2

你可以使用下面的方法。

@using (Html.BeginForm("MyAction", "MyController", new { area = "MyArea" }, FormMethod.Post, new { @class = "" }))
{
<div class="col-md-6">
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
@Html.LabelFor(m => m.MyData, new { @class = "col-form-label" })
</div>
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
@Html.TextBoxFor(m => m.MyData, new { @class = "form-control" })
</div>
</div>
<div class="col-md-6">
<div class="">
<button class="btn btn-primary" type="submit">Send</button>
<button class="btn btn-danger" type="reset"> Clear</button>
</div>
</div>
}

然后清空表单:

    $('.btn:reset').click(function (ev) {
ev.preventDefault();
$(this).closest('form').find("input").each(function(i, v) {
$(this).val("");
});
});

jQuery没有reset()方法;但是本地JavaScript可以。因此,将jQuery元素转换为JavaScript对象可以使用:

$("#formId")[0].reset();


$("#formId").get(0).reset();

我们可以简单地使用Javascript代码

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