$(“…”) .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()不是一个函数
原因可能是已reset
为name
或id
的元素。 我遇到了同样的问题。
将任何元素命名为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代码,那就太棒了:)
所以…我认为这里有一些事情发生。
- 正如迭戈在他的回答中指出的那样,
$('#theForm')[0].reset();
效果很好。 - 您尝试过的第二个示例:
document.getElementById(theForm).reset();
将无法工作,因为javascript会认为你正在使用一个名为“theForm”的变量 – 如果是这种情况,那么变量的值必须是表示表单id的字符串……类似于var theForm = 'theForm';
这真的很快就会让人感到困惑。 我怀疑你的意思是:document.getElementById('theForm').reset();
– 游泳工作,与#1的代码基本相同。 - 这些示例都假设您的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对我来说很有用。