我有一个带有两个提交按钮和一些代码的表单:
HTML:
<input type="submit" name="save" value="Save" />
<input type="submit" name="saveAndAdd" value="Save and add another" />JavaScript:
form.onSubmit = function(evnt) {
// Do some asyncrhnous stuff, that will later on submit the form
return false;
}当然,这两个提交按钮完成不同的任务。有没有办法在onSubmit中找出哪个按钮被按下了,这样以后我就可以通过执行thatButton.click()来提交
理想情况下,我不希望修改按钮的代码,只是有一个纯粹的JavaScript插件,具有这种行为。
我知道火狐有evnt.explicitOriginalTarget,但我找不到适用于其他浏览器的。
发布于 2010-08-27 01:13:33
不是在提交事件处理程序本身,不是。
但您可以做的是向每个提交添加单击处理程序,这将通知提交处理程序单击了哪个提交处理程序。
下面是一个完整的示例(为简洁起见,使用jQuery )
<html>
<head>
<title>Test Page</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
jQuery(function($) {
var submitActor = null;
var $form = $('#test');
var $submitActors = $form.find('input[type=submit]');
$form.submit(function(event) {
if (null === submitActor) {
// If no actor is explicitly clicked, the browser will
// automatically choose the first in source-order
// so we do the same here
submitActor = $submitActors[0];
}
console.log(submitActor.name);
// alert(submitActor.name);
return false;
});
$submitActors.click(function(event) {
submitActor = this;
});
});
</script>
</head>
<body>
<form id="test">
<input type="text" />
<input type="submit" name="save" value="Save" />
<input type="submit" name="saveAndAdd" value="Save and add another" />
</form>
</body>
</html>发布于 2011-06-23 18:06:09
<form onsubmit="alert(this.submitted); return false;">
<input onclick="this.form.submitted=this.value;" type="submit" value="Yes" />
<input onclick="this.form.submitted=this.value;" type="submit" value="No" />
</form>jsfiddle用于相同的功能
发布于 2012-04-08 20:52:47
基本框架,但已确认工作正常,例如:
<script type="text/javascript">
var clicked;
function mysubmit() {
alert(clicked);
}
</script>
<form action="" onsubmit="mysubmit();return false">
<input type="submit" onclick="clicked='Save'" value="Save" />
<input type="submit" onclick="clicked='Add'" value="Add" />
</form>https://stackoverflow.com/questions/3577469
复制相似问题