$(“…”) .reset不是一个函数…在jQuery中重置表单

我试图用jQuery重置一些表单,但我遇到了一些麻烦。 除了涉及编写函数或自定义插件的解决方案之外,我一直在寻找重置方法不是jQuery的标准部分,但它是标准Javascript的一部分。

无论如何,我的第一个方法就是去

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

表单的id =“theForm”。

这显然不起作用,因为它假设reset()是jQuery的一部分。

接下来我尝试的是

document.getElementById(theForm).reset();

哪个也没用。 我是jQuery的新手所以我不确定我是否可以将普通的Javascript与jQuery混合使用。 说这句话我听起来像个白痴。

无论如何,在做了一些更多的研究之后,我一次又一次地发现我可以通过这样做来在jQuery中使用reset()…

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

要么

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

在涉及这两个片段的每篇文章中,评论中的每个人都已经开始工作。

除了我。

错误控制台一直告诉我,我写的东西不存在。 我已经检查了所有代码,并且没有其他单词“reset”的实例,所以也不可能。

无论如何,我很难过。

解决此线程中的原始问题

对于像这样的HTML表单:

 

当使用document.getElementById("theForm").reset() ,如果你得到一个js错误说

reset()不是一个函数

原因可能是已resetnameid的元素。 我遇到了同样的问题。
将任何元素命名为reset会覆盖reset()函数。

这个:

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

工作得很好。 在这里观看: http : //jsfiddle.net/tZ99a/1/

因此,表单或者将脚本附加到按钮的方式都有问题。

该错误是由重置按钮(或任何其他表单元素)名称reset – name="reset" 。 因此form.reset解析为DOM元素, name="reset"而不是reset方法。

DEMO WITH name="reset" – 检查控制台

 $(function() { $('.reset1').on('click', function() { this.form.reset(); }); $('.reset2').on('click', function() { $('form')[0].reset(); }); }); 
  


如果"theForm"是一个ID,我们是否需要使用$('#theForm')[0] ? 我认为这是一个错误的习惯。 如果HTML页面中有更多表单,请使用名称。 如果您使用ID,它应该是唯一的。

如果你能在这里提供你的HTML代码,那就太棒了:)

所以…我认为这里有一些事情发生。

  1. 正如迭戈在他的回答中指出的那样, $('#theForm')[0].reset(); 效果很好。
  2. 您尝试过的第二个示例: document.getElementById(theForm).reset(); 将无法工作,因为javascript会认为你正在使用一个名为“theForm”的变量 – 如果是这种情况,那么变量的值必须是表示表单id的字符串……类似于var theForm = 'theForm'; 这真的很快就会让人感到困惑。 我怀疑你的意思是: document.getElementById('theForm').reset(); – 游泳工作,与#1的代码基本相同。
  3. 这些示例都假设您的HTML类似于:
    ...

    – id“theForm”必须位于表单标记上,而不是表单中的输入标记。

我创造了一个小提琴,展示了这些工作: http : //jsfiddle.net/boliver/ZDQxE/

请检查您是否没有名为“reset”的表单元素。 如果是这样,重命名它,.reset()方法将起作用。 否则document.getElementById(“formId”)。reset将选择名为’reset’的表单元素,这就是reset()方法无法工作的原因。 哟会得到像’对象不是函数’这样的错误信息。

问题很可能是表单的重置按钮ID设置为“重置”,因此错误消息。

我遇到了同样的问题,然后终于找到并改变了我的表格:


     form action =“bla”method =“post”id =“myform”>
     ...
    
     / FORM>

更改重置按钮ID对我来说很有用。