Javascript 发现哪个表单按钮触发了提交
在我的表单中,我有两个提交按钮Javascript 发现哪个表单按钮触发了提交,javascript,jquery,Javascript,Jquery,在我的表单中,我有两个提交按钮 <input type="submit" name="save" value="Save as draft"/> <input type="submit" name="send" value="Start sending" /> 如何检查按下了哪个按钮 $('input').each(function(n) { $(this).click( function() { var name = $(this).attr('name'
<input type="submit" name="save" value="Save as draft"/>
<input type="submit" name="send" value="Start sending" />
如何检查按下了哪个按钮
$('input').each(function(n) {
$(this).click( function() {
var name = $(this).attr('name');
if (name === 'save') {
// do stuff
}else if (name === 'submit'){
// do some other stuff
}
}
});
当然,您也可以使用switch语句
如果要执行的作业复杂且不同,则应考虑使用2种不同的形式< /P> 我希望这能回答你的问题
编辑:$('input:submit').click(function(n) {
var name = $(this).attr('name');
if (name === 'save') {
// do stuff
}else if (name === 'submit'){
// do some other stuff
}
}
});
如果是我,我会做得有点不同。我会做一些类似的事情-
<button type='button' id='formSave'>Save as draft</button>
<button type='button' id='formSend'>Start Sending</button>
$('#formSave').click(function(){
//submit form
//task 1
});
$('#formSend').click(function(){
//submit form
//task 2
});
另存为草稿
开始发送
$('#formSave')。单击(函数(){
//提交表格
//任务1
});
$('#formSend')。单击(函数(){
//提交表格
//任务2
});
我只是根据你的按钮名和其他什么来回答,但听起来你想做些类似的事情
$(":submit").click(function() {
$("form").data("submit-button", this.name);
});
$("form").submit(function() {
var button = $(this).data("submit-button");
...
});
在保存名称的提交按钮上添加一个单击处理程序。然后在提交处理程序中提取该名称。我建议使用HurnsMobile的方法,但如果您确实需要一个函数来处理这两个按钮,则可以使用jQuery事件对象来检测按钮
$('form').submit(function(event){
if(event.target.name == 'save') {
// do save task
} else if (event.target.name == 'send') {
// do send task
}
});
我相信您可以改进此问题的标题。为这两个问题添加单击处理程序buttons@aleksv请继续并将其发布,这样我就可以+1您在哪里检查按钮是否被单击?现在您正在向每个
输入添加事件处理程序,即使它不会做任何事情。似乎有点浪费。@Ibu将其优化为$(“输入”)。单击抱歉,吹毛求疵,但如果您使用$('input:submit')
:),我会+1@JohnP yes会这样做,如果输入类型是submit,但在这种情况下,他将类型作为按钮。我认为第二个应该使用“#formSend”
,这打破了非JavaScript支持。请编写不引人注目的JavaScript。@Raynos提出了一个很好的观点。还请记住,表单可以在不按按钮的情况下提交,比如在输入元素处于焦点时按return键;有些浏览器会伪单击最近的按钮,其他浏览器会在不伪单击按钮的情况下提交表单。@Raynos这是一个不显眼的JS。我想你的意思是你应该让页面降级。但是OP已经提到,他在发送数据到服务器的过程中有一个JS步骤。@ JNNP OK“不引人注目的JS”=保持HTML和JS分离。“渐进增强”=JS仅增强现有功能。明白了。哦,等等,我以为你只是在复制按钮的名称,按钮元素本身,而不是表单。但即便如此:为什么不将逻辑放在单击处理程序中,而不是表单的提交处理程序中?@MarcelKorpel,因为当您通过其他方法(如按ENTER)提交表单时,逻辑不会运行。您确定这样做有效吗。我相信有些浏览器会设置event.target==form
$('form').submit(function(event){
if(event.target.name == 'save') {
// do save task
} else if (event.target.name == 'send') {
// do send task
}
});