【问题标题】:Mootools submit form only works when selecting form through idMootools 提交表单仅在通过 id 选择表单时有效
【发布时间】:2012-07-30 17:00:25
【问题描述】:

我一直在尝试通过 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();

【问题讨论】:

    标签: javascript forms mootools submit


    【解决方案1】:

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

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

    • 表格
      • 输入[name=foo]
      • 输入[name=bar]

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

    你的问题是:

    • 表单(使用.submit.reset 方法)
      • 按钮[name=submit]

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

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

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

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

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

    这和做的一样

    Array.prototype.slice.call(arguments)
    

    【讨论】:

    • 对不起,我不太明白。另外,使用 jQuery 是不是超级简单?我有点坚持使用 Mootools,试图充分利用它;)通常它只是不同,但在像我的示例这样的情况下,它会令人沮丧。
    • 这是很多 jquery 用户的问题。不知道幕后发生了什么......我挑战你告诉我这在 jquery 中有什么不同 - jsfiddle.net/wu89e - 一个元素就是一个元素,无论你的框架是什么。这是一个原生的表单方法。
    • 如果你想通过api调用.submit(),它也会失败。 jsfiddle.net/wu89e/1 - 按照上面的建议工作:jsfiddle.net/wu89e/2 - 在警报之后,正确的提交方式。
    • 我误解了你的回答。我的表单中没有名为 submit 的元素。所以你的回答我还是不明白……
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2013-01-21
    相关资源
    最近更新 更多