由於keypress事件在有提交按鈕時觸發click事件,所以我能想到的唯一解決方法是使用type =按鈕。
純JavaScript(Fiddle):
<form id="f1" name="form1" action="" onsubmit="subimiti(this)" method="POST">
<input type="text" id="meuId" value="Test" onkeypress="setEvent(event)"/>
<input id="butao" type="button" onclick="setEvent(event)" value="Subimeta u formi trem bao!!"/>
</form>
function subimiti(form)
{
event.preventDefault();
alert(form.getAttribute('event'));
}
function setEvent(event)
{
if(event.type == 'click')
{
document.form1.setAttribute('event','click');
subimiti(document.form1);
}
else if (event.keyCode == 13)
{
document.form1.setAttribute('event','keypress');
}
}
(在我看來更清潔/更簡單的代碼)使用jQuery:
$(function(){
$('form').submit(function(){
alert($(this).attr('event'));
});
$("input#butao").on('click', function(e) {
$("form").attr("event", "click").submit();
});
$("input").on('keypress', function(e) {
if (e.which == 13)
{
$("form").attr("event", "keypress");
}
});
});
有一個點擊監聽器只butao和任何輸入輸入監聽。
<form id="f1" name="form1" action="">
<input type="text" id="meuId" value="Teste"/>
<input id="butao" type="button" value="Subimeta u formi trem bao!!"/>
</form>
Fiddle(添加的preventDefault擺弄,所以你可以看到結果,而無需實際提交)的[確定哪些元素提交一個表單從內部的onsubmit]
可能重複(http://stackoverflow.com/questions/541869 /確定哪個元素提交了一個從內部提交的表單) – lifetimes