2011-02-14 11 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 
} 
}); 

});