Mootools提交表单仅在通过id选择表单时有效

时间:2012-07-30 17:00:25

标签: javascript forms mootools submit

我一直试图通过mootools(1.4.5)在FF 14上提交表单。表单不包含名为submit的输入(这通常是问题)。我想要的是在select中提交表单。半小时后,下面的代码是我的第一次尝试,让它工作。 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();

1 个答案:

答案 0 :(得分:1)

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

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

  • 形式
    • 输入[名称= FOO]
    • 输入[名称=巴]

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

你的问题是:

  • 表单(使用.submit.reset方法)
    • 按钮[名称=提交]

现在form.submit停止引用submit方法并开始引用input元素。

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

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

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

基本上你用一个干净的提交方法创建一个新的表单元素。返回一个对象,并使用另一个“脏”形式作为上下文调用该方法。

这和做

一样
Array.prototype.slice.call(arguments)