1

我遇到了一些奇怪的事情。我有以下表格:

<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绑定submitformreset...

self.addExpense = function (formElement) {
  $('#addExpenseForm')[0].reset();
};

一切似乎都很好,但我收到了这个错误:

Uncaught TypeError: Property 'reset' of object #<HTMLFormElement> is not a function 

而且我不知道为什么会得到这个,因为我的代码是正确的,奇怪的是代码在删除reset按钮时工作正常。

我该如何解决这个问题?reset()方法和reset按钮同时使用会不会有冲突?

只是要知道,我做了这个jsfiddle来测试删除reset按钮并验证我在这里问什么。

http://jsfiddle.net/oscarj24/vWNf7/

4

3 回答 3

5

是的,这里有很大的不同。使用 jQuery 时,通过 jQuery 样式调用的 DOM 元素(exp. $("addExpenseForm"))被赋予“属性”。如何编写和添加这些属性取决于元素及其使用(以及其他东西,但这是另一课)。

可以这么说,当您从没有重置按钮的情况下创建时,“属性”重置确实是一个功能!查询时将返回以下值:function reset() { [native code] }.

但是,当您手动添加按钮时(也就是将其放置在 HTML 中),reset 将变为 THAT BUTTON 而不是功能。换句话说,它将返回类似<input type="reset" value="Reset" class="reset" id="reset" name="reset" />.

这是你的问题...

如果按钮是通过 HTML 添加的,则使用:

$('#addExpenseForm')[0].reset.click();

否则,按钮不是type="reset",而只是一个说“重置”的按钮,或者根本没有按钮!利用:

$('#addExpenseForm')[0].reset();

或者

将其全部包含在一个大的 if 语句中!

if (typeof $('#addExpenseForm')[0].reset == "function") {
    $('#addExpenseForm')[0].reset();
}
else {
    $('#addExpenseForm')[0].reset.click();
}

只是为了咧嘴笑和咯咯笑,这是一行中的 IF 语句:

typeof $("#addExpenseForm")[0].reset == "function" ? $("#addExpenseForm")[0].reset() : $("#addExpenseForm")[0].reset.click();
于 2013-04-24T20:46:34.623 回答
0

Try this

$('#resetBtn').on('click', function(e){
    e.preventDefault();
    $("#myform")[0].reset.click();
}
于 2013-12-05T08:50:57.513 回答
0

将重置按钮 id 属性从“重置”更改为其他任何内容。

请参阅此处了解您收到错误的原因:https ://stackoverflow.com/a/12541054/492325

于 2013-04-24T20:44:54.950 回答