2

我一直在尝试通过 FF 14 上的 mootools (1.4.5) 提交表单。该表单不包含名为 submit 的输入(这通常是问题所在)。我想要的是 onchange 选择提交表单。半小时后,下面的代码是我第一次尝试让它工作。objSelect 是一个选择对象,包含在我需要提交的表单中。

$(''+objSelect.getParent('form').get('id')).submit();

.

下面的代码不能正常工作的原因是什么?

// Without the explicit cast to string (''+); doesn't work
$(objSelect.getParent('form').get('id')).submit();

也不

// Most obvious way; doesn't work
objSelect.getParent('form').submit();
4

1 回答 1

1

您不能拥有通过旧 DOM 级别 API 导出的保留名称的子节点 - 请参阅此处的表单是如何表示的:http ://www.quirksmode.org/js/forms.html#access

所以基本上 - 在元素级别,如果你有:

  • 形式
    • 输入[名称=foo]
    • 输入[名称=栏]

form.foo并将form.bar在表单元素对象上引用这些元素。

你的问题是:

  • 形式(使用.submitand.reset方法)
    • 按钮[名称=提交]

现在form.submit停止引用提交方法并开始引用输入元素。

您仍然可以通过以下方式提交此表格:

  • 重命名错误的元素或从表单中删除。
  • 通过从干净的表单调用提交来作弊。

new Element("form").submit.call(this.getParent("form"));

基本上,您使用干净的提交方法创建一个新的表单元素。它返回一个对象,然后您以其他“脏”形式作为上下文调用该方法。

这和做的一样

Array.prototype.slice.call(arguments)
于 2012-07-30T18:31:53.380 回答