2011-02-14 28 views
3

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

回答

0

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

下面是一个例子

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

    $('input#btnReset').click(function(){ 
     alert('Form Reset'); 
     return false; 
    }); 
}); 
0

您可以定义onclick事件处理程序的按钮,这将节省状态变成一些全局范围的变量。然后你会在onsubmit处理程序中检查变量的状态。

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

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; 
}); 

example
event.preventDefault

0

jQuery事件通过an event object通过他们的调用。您可以使用此事件对象来确定如何调用该事件。

特别是,如果你把它作为该函数中的参数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 
} 
}); 

});