我有一个表格上有几个按钮。其中两个按钮使用ajax提交表单并清除它,以便用户可以在继续之前添加多个记录。最后一个按钮用于用户完成页面并希望移动到下一页。是否有可能在jQuery的.submit()方法中告诉表单是如何提交的(点击输入,或点击按钮的对象)?
答案 0 :(得分:0)
不确定这是否是最佳做法,但我发现如果我创建一个提交事件处理程序然后在其后创建其他按钮的处理程序,它似乎工作正常,至少在Chrome中。
这是一个例子
$(function(){
$('form#frmField').submit(function(evt){
alert('Form Submitted');
return false;
});
$('input#btnReset').click(function(){
alert('Form Reset');
return false;
});
});
答案 1 :(得分:0)
您可以为按钮定义onclick事件处理程序,这样可以将状态保存到某个全局范围变量中。然后你将在onsubmit处理程序中检查变量的状态。
答案 2 :(得分: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;
});
答案 3 :(得分:0)
jQuery事件通过他们的调用传递an event object。您可以使用此事件对象来确定事件的调用方式。
具体来说,如果您在函数中将其作为参数e
传递,则可以检查e.type
,其应该等于click
或e.which
,如果它是以一个输入提交的,将是13。
您可以使用target
找出使用e.target
启动提交的DOM元素。
所以,
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
}
});
});