将表单域重置为初始状态

Posted

技术标签:

【中文标题】将表单域重置为初始状态【英文标题】:Reseting form fields to initial state 【发布时间】:2013-03-27 19:11:39 【问题描述】:

我正在使用下面的代码使用 Jquery 来设置我的表单字段

 $("#frmlogin").reset()

上面是我用来重置下面表单中的字段的代码

<form  name='frmlogin' method='POST' id="login_form" style="margin:0 auto; margin-top:50px; width: 40%; height:300px; text-align:center;">

                        <input class="oFormJumbo oFormMed oInputText" type="text" name="requiredLogin" placeholder="Login Id" AUTOCOMPLETE=OFF />
                        <div class="cleaner h10"></div>
                        <input class="oFormJumbo oFormMed oInputText "  type="password" value="" name="password" placeholder="Password"  AUTOCOMPLETE=OFF onfocus="changetoUpperCase(document.frmlogin.requiredLogin.value);" />
                        <div class="cleaner h10"></div>
                        <a href="javascript:fp();">Forgot Password?</a>
                        <div class="cleaner"></div>
                        <input style="margin-left:0px; "   class="submit_btn float_l" type="button" value="Sign In" name="Sign In" onClick="javascript:func_get_data();"/>
                        <input style="margin-left: 200px; "  class="submit_btn float_r" type="button" value="Reset" id="reset" name="reset"   onclick="javascript:Reset()"/>

 </form>

由于某种原因,代码无法正常工作。 JavaScript 抛出以下异常

TypeError: $("#frmlogin").reset is not a function
[Break On This Error]   

$("#login_form").reset()

谁能告诉我为什么它不起作用?我已经包含了 Jquery.js。

根据 Adils 的建议,我什至尝试过

*$("#login_form")[0].reset()*

现在它给了

TypeError: $("#frmlogin")[0] is undefined
[Break On This Error]   

$("#frmlogin")[0].reset()

我错过了什么?

我尝试了下面建议的所有代码,除了 Amit Agrawal,因为我想使用 Jquery。没有炒锅。我知道我的休息代码是提供的。我在表单中缺少一些东西

【问题讨论】:

How to reset a form using jQuery with .reset() method的可能重复 【参考方案1】:

您是否因为某些原因忽略了重置输入元素?

http://jsfiddle.net/BhTv5/

<input type="reset" />

【讨论】:

【参考方案2】:

你正在使用jQuery对象调用reset,使用DOM对象调用reset,你可以使用索引器将jQuery对象转换为DOM对象。

改变

$("#login_form").reset()

$("#login_form")[0].reset()

编辑 基于 cmets,问题的另一个原因是重置按钮的 ID 和名称。令人惊讶的是,如果有任何 id 或名称重置的输入,那么 form.reset() 函数将停止工作。更改重置按钮的id和名称,上面的代码就可以工作了。

Live Demo

改变

<input style="margin-left: 200px; "  class="submit_btn float_r" type="button" value="Reset" id="reset" name="reset"   onclick="javascript:Reset()/>

<input style="margin-left: 200px; "  class="submit_btn float_r" type="button" value="Reset" id="myreset" name="myreset" />

与按钮绑定事件

$('#myreset').click(function ()    
    $("#login_form")[0].reset();
);

【讨论】:

我试过你的代码现在它给出了 TypeError: $("#frmlogin")[0] is undefined [Break On This Error] $("#frmlogin")[0].reset() 另一个奇怪的问题是按钮的 id 和名称,如果表单中的任何输入元素具有 id 重置,则在表单 dom 元素上调用重置失败。用演示检查我的更新答案。【参考方案3】:

试试这个代码你不会得到类型错误。你声明 id 是错误的你声明了表单 Name not id 尝试使用 id 并重置表单。

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

(或)

  $("#login_form").reset();

【讨论】:

【参考方案4】:

reset 是 javascript 方法,需要 DOM 对象

应该是

$("#login_form")[0].reset()

【讨论】:

【参考方案5】:

您必须使用属性选择器获取name

$('form[name="frmlogin"]').reset();

或带有 id:

$('#login_form').reset();

您的代码中断是因为您没有引用具有正确属性的表单。

【讨论】:

【参考方案6】:

使用 JavaScript

document.getElementById("login_form").reset();//Use the id of the form

使用 jQuery

("#login_form").reset();

【讨论】:

以上是关于将表单域重置为初始状态的主要内容,如果未能解决你的问题,请参考以下文章

将 Daterangepicker 重置为初始值

使用重置按钮,重置表单信息

Angular Reactive Forms 重置值

js form 表单 重置 清空

Vue中重置data的数据为初始状态

HTMLHTML 表单 ② ( 按钮表单 | 普通按钮 | 提交按钮 | 重置按钮 | 图片按钮 | 文件域 )