我想知道如何在表单内的formmethod
中设置formaction
,formenctype
,formtarget
或<input type="submit">
submit
事件。
<form action="/url" method="POST">
...
<input type="submit" value="Action 1" formaction="/another-url">
<input type="submit" value="Action 2" formmethod="PUT">
</form>
$(function(){
$('form').bind('submit', function(){
// how to get it here?
// need to know if action1 or action2 was clicked, and if any of them have "form*" attributes
return false;
});
});
这里解释了http://www.adobe.com/devnet/dreamweaver/articles/html5-forms-pt2.html#articlecontentAdobe_text_31
由于我正在创建一个jQuery插件,我不知道它将在何处使用,因此它必须是一个通用的解决方案。似乎jQuery无法处理它以提供安全的跨浏览器解决方案。
由于
答案 0 :(得分:2)
我正在解决这个问题:
$('form > button[type="submit"]').bind('click', function() {
this.parentNode.action = this.getAttribute('formaction');
});
此代码段假定button
是form
的直接后代,但可以轻松扩展为更通用的内容。
我认为这是标准中的一个缺陷,并且真正的表单操作应该可以通过JavaScript以某种方式访问,而无需触及按钮或其值。据我所知,没有解决方法是不可能的。
答案 1 :(得分:1)
找到答案,但我不知道它是否是crossbrowser:
$('form').on('submit', function(event){
var submit_button = event.originalEvent.explicitOriginalTarget;
if (submit_button.attr('formaction')){
// form action, enctype, etc
}
return false;
});
编辑:这只适用于Gecko,我正在寻找其他选择。似乎IE有event.srcElement
,但它不一样。 event.originalEvent.explicitOriginalTarget
是可行的方法,但只适用于Firefox,Chrome或IE也无论如何都可以使用。
除非绑定到submit
按钮(<input type="submit">
和<button type="submit">
),否则没有跨浏览器方式执行此操作,但这不适用于手动设置按钮将通过Javascript提交,而绑定“提交”它将按预期工作