3

我有一个表格,上面有几个按钮。其中两个按钮使用 ajax 提交表单并清除它,以便用户可以在继续之前添加多条记录。最后一个按钮用于当用户完成页面并想要移动到下一页时。jQuery 的 .submit() 方法是否可以告诉表单是如何提交的(按回车键,或获取单击按钮的对象)?

4

4 回答 4

0

jQuery 事件通过它们的调用传递一个事件对象。您可以使用此事件对象来确定事件的调用方式。

具体来说,如果你将它作为参数传递e给函数,你可以检查e.type,它应该等于click,或者e.which,如果它是通过回车提交的,那么它应该是 13。

您可以使用target找出启动提交的 DOM 元素e.target

所以,

jQuery('#foo').click(function(e){
var initiator = $(e.target); //jQuery object for the DOM element that initiated the submit
if(e.type==="click")
{
//is a click
}
else if(e.which==="13")
{
//is an 'enter' triggered submission
}
});

});

于 2011-02-14T16:18:08.870 回答
0

你可以这样尝试:

HTML:

<form id="myform">
    <input type="text" id="text1" name="text1" /><br />
    <input type="button" class="button-submit" id="b1" name="b1" value="send 1" /><br />
    <input type="button" class="button-submit" id="b2" name="b2" value="send 2" /><br />
    <button class="button-submit" id="b3">send 3</button>
</form>

<br />
<div id="data"></div>

JS:

$('#myform').bind('submit', function(event, from) {

    if(from)    
       $('#data').append("from :" + $(from).attr('id') + '<br />');

    return false;

});

$('#myform').keypress(function(event) {

  if (event.which == '13') {
     event.preventDefault(); //preventDefault doesn't stop further propagation of the event through the DOM. event.stopPropagation should be used for that.
     event.stopPropagation();
     $(this).trigger('submit', [this]); 
     return false; 
  }

});

$('.button-submit').bind('click', function(event) { 
    event.stopPropagation();
    $('#myform').trigger('submit', [this]); 
    return false; 
});

示例
event.preventDefault

于 2011-02-14T16:08:20.760 回答
0

不确定这是否是最佳实践,但我发现如果我创建一个提交事件处理程序,然后为其他按钮创建处理程序,它似乎可以正常工作,至少在 Chrome 中是这样。

这是一个例子

$(function(){
    $('form#frmField').submit(function(evt){
        alert('Form Submitted');
        return false;
    });

    $('input#btnReset').click(function(){
        alert('Form Reset');
        return false;
    });
});
于 2011-02-14T15:56:07.400 回答
0

您可以为按钮定义 onclick 事件处理程序,将状态保存到某个全局范围的变量中。然后您将在 onsubmit 处理程序中检查变量的状态。

http://jsfiddle.net/archatas/6dsFc/

于 2011-02-14T15:56:51.720 回答