<form id="addExpenseForm" name="addExpenseForm" data-bind="submit: addExpense">
<input type="submit" value="Add" class="save" id="submit" name="submit" />
<input type="reset" value="Reset" class="reset" id="reset" name="reset" />
</form>
如您所见,内部有一个reset
按钮可清除所有form
。
我正在使用Knockout.js
以这种方式绑定submit
的{{1}}和form
...
reset
一切似乎都很好,但我收到了这个错误:
self.addExpense = function (formElement) {
$('#addExpenseForm')[0].reset();
};
我无法弄清楚为什么我得到这个,因为我的代码是正确的,而奇怪的是,删除Uncaught TypeError: Property 'reset' of object #<HTMLFormElement> is not a function
按钮时代码工作正常。
我该如何解决这个问题?在同时使用reset
方法和reset()
按钮时是否存在某种冲突?
要知道,我做了reset
来测试删除jsfiddle
按钮并验证我在这里要求的内容。
答案 0 :(得分:5)
是的,这里有很大的不同。使用jQuery时,通过jQuery样式调用的DOM元素(exp。$(“addExpenseForm”))被赋予“属性”。如何编写和添加这些属性取决于元素及其使用(以及其他内容,但这是另一个教训)。
我只想说,当你创建一个没有重置按钮时,那么“属性”重置确实是功能!查询时,它将返回以下值:function reset() { [native code] }
。
但是,当你手动添加按钮时(也就是你把它放在HTML中),然后重置变为那个按钮而不是一个功能。换句话说,它将返回类似<input type="reset" value="Reset" class="reset" id="reset" name="reset" />
的内容。
这是你的问题...
如果通过HTML添加BUTTON然后使用:
$('#addExpenseForm')[0].reset.click();
否则,按钮不是type="reset"
,而只是一个按钮,表示“重置”或根本没有按钮!使用:
$('#addExpenseForm')[0].reset();
if (typeof $('#addExpenseForm')[0].reset == "function") {
$('#addExpenseForm')[0].reset();
}
else {
$('#addExpenseForm')[0].reset.click();
}
对于Grins和咯咯笑,这里的IF语句是一行:
typeof $("#addExpenseForm")[0].reset == "function" ? $("#addExpenseForm")[0].reset() : $("#addExpenseForm")[0].reset.click();
答案 1 :(得分:0)
将重置按钮id属性从“重置”更改为其他任何内容。
请参阅此处,了解您收到错误的原因:https://stackoverflow.com/a/12541054/492325
答案 2 :(得分:0)
试试这个
$('#resetBtn').on('click', function(e){
e.preventDefault();
$("#myform")[0].reset.click();
}