Javascript 如何使用jQuery提交表单并指定要使用的提交按钮

Javascript 如何使用jQuery提交表单并指定要使用的提交按钮,javascript,jquery,Javascript,Jquery,假设一个表单有多个提交按钮: 。。。 删除Foo 删除栏 编辑 ... 我只截获2个删除按钮的点击,并禁用表单提交以触发自定义模式对话框,该对话框上有OK和CANCEL按钮以确认用户选择。如果用户按OK,我想提交表单。如果取消,则对话框将被取消,并且不会发生任何事情 我已将第一部分连接起来以触发对话框,但我不知道如何让对话框中的“确定”按钮触发表单提交,这取决于按下了原始提交按钮(例如,如果按下了Delete按钮,我想与用户确认他们要删除,如果是,则按正常方式提交表单 我已经到处搜索并查看了j

假设一个表单有多个提交按钮:

。。。
删除Foo
删除栏
编辑
...
我只截获2个删除按钮的点击,并禁用表单提交以触发自定义模式对话框,该对话框上有OK和CANCEL按钮以确认用户选择。如果用户按OK,我想提交表单。如果取消,则对话框将被取消,并且不会发生任何事情

我已将第一部分连接起来以触发对话框,但我不知道如何让对话框中的“确定”按钮触发表单提交,这取决于按下了原始提交按钮(例如,如果按下了
Delete
按钮,我想与用户确认他们要删除,如果是,则按正常方式提交表单

我已经到处搜索并查看了jQuery文档,但还没有找到答案,所以我肯定错过了一些非常简单的东西


更新:我不想使用JS确认功能。在我上面的原始问题中,出于各种原因,我希望使用自定义模式对话框。

检查JS确认功能并将其作为onclick事件


您有一个很好的例子。

为什么不让它们成为常规按钮,然后单击“设置变量”以确定操作类型,然后在表单提交时包含此隐藏变量,并检查是否要首先找到您应该执行的操作,您必须截取这两个(全部)对于按钮,您可以通过获取特定表单中的任何提交按钮轻松完成此操作,然后您可以提出问题,如果您仍然拥有当前事件处理程序,您可以确定按下了哪个按钮并执行您想要的回调。例如:

 <form id="myform">
   <button type="submit" value="delete">Delete</button>
   <button type="submit" value="Edit">Edit</button>
</form>
JSLint在这里:


基本上,
console.log(操作)
将输出“删除”或“编辑”基于最初的单击。如何处理该值取决于您。开关语句、简单的if块可以工作,但取决于您,我不知道您的应用程序的范围。

窗口。如果用户选择OK,确认函数将返回true,如果用户取消,确认函数将返回false。使用此逻辑,您可以执行以下操作:

<button id="delete" type="submit" value="delete">Delete</button>
<button type="submit" value="Edit">Edit</button>

var question;
$("#delete").click(function(){question=window.confirm("Are you sure?");)
if (question){
    //Submit the form here
}
else{
    alert("Not deleted!");
}
删除
编辑
var问题;
$(“#删除”)。单击(函数(){question=window.confirm(“确定吗?”);)
若有(问题){
//在这里提交表格
}
否则{
警报(“未删除!”);
}

我觉得你把它弄得太复杂了,你可以做一些简单的事情,比如:

<form >
  <input name="foo" value="foo">

  <button name="sub0" value="sub0" onclick="
    return window.confirm('sure?');
  ">submit 0</button>

  <button name="sub1" value="sub1" onclick="
    return window.confirm('sure?');
  ">submit 1</button>

</form>

提交0
提交1
如果用户在“确认”对话框上单击“确定”,则表单将从按下的按钮提交。如果未按下,则不会提交。

My 2c:

... (edited: removed the value parameter. buttons don't need that)
<button onclick='deleteFoo(); ' >Delete Foo</button>
<button onclick='deleteBar(); ' >Delete Bar</button>
<button onclick='allowEdit(); ' >Edit</button>   
...

function deleteFoo() {
    do-your-modal-whichever-way-you-want;
    if confirmed, 
         $('#form-id').attr('action','your-action-for-delete-foo');
         $('#form-id').submit();
    else-just-return
}


function deleteBar() {
    do-your-modal-whichever-way-you-want;
    if confirmed, 
         $('#form-id').attr('action','your-action-for-delete-bar');
         $('#form-id').submit();
    else-just-return
}


function allowEdit() {
    whatever
}
…(已编辑:删除了value参数。按钮不需要该参数)
删除Foo
删除栏
编辑
...
函数deleteFoo(){
你想怎么做就怎么做;
如果得到证实,
$('#form id').attr('action','your-action-for-delete-foo');
$('#表单id')。提交();
否则就回来吧
}
函数deleteBar(){
你想怎么做就怎么做;
如果得到证实,
$('#form id').attr('action','your-action-for-delete-bar');
$('#表单id')。提交();
否则就回来吧
}
函数allowEdit(){
无论什么
}

我正在使用我自己的自定义模式对话框,因此希望显示这些对话框与使用JS确认功能的对话框。原理相同,在两个按钮上添加不同的onclick事件。要提交表单,请使用函数。我不遵循。如果我只使用.submit函数,将调用哪个提交按钮操作?记住有两个或更多提交按钮ns用于表单。对,很抱歉,我不够清楚。我本想使用“提交”按钮作为默认提交功能,但主要思想是在onclick事件中。我不确定您是如何实现每个按钮的,因此我不能给您更准确的想法,但这是您应该开始的地方。在我最初的问题中,我声明我想使用我自己的自定义modal对话框,所以使用JS确认不是我要找的方法。你不必使用该确认。你可以在那里使用任何你想要的,但这个解决方案解决了你找出原始意图的问题。更新了原始问题,再次明确指出我使用的是自定义模态jquery对话框,而不是JS确认。也更新了to添加示例,其中有3个按钮,我只截取2个删除操作。一些答案建议截取所有提交按钮,这不是我想要的。谢谢,这越来越近。For
$(“#表单id”).attr('action','your-action-For-delete-foo')
,删除foo的
操作的值是多少?您的操作html页面。通常是a。正如您所说,您将根据单击的按钮处理表单,因此,我假设您有不同的操作,具体取决于单击的按钮(如果您喜欢最初的答案,请向上投票)。这是不对的,这是两个按钮的一个操作。在我最初的问题中,我说这是同一个表单,有多个提交按钮。那么?只需做其余的思考!每个按钮的功能允许您进行必要的处理……然后,提交()。具体地说,在您的情况下,请继续并在表单标记中使用action=',…。只需在每个按钮的函数中执行submit()。
... (edited: removed the value parameter. buttons don't need that)
<button onclick='deleteFoo(); ' >Delete Foo</button>
<button onclick='deleteBar(); ' >Delete Bar</button>
<button onclick='allowEdit(); ' >Edit</button>   
...

function deleteFoo() {
    do-your-modal-whichever-way-you-want;
    if confirmed, 
         $('#form-id').attr('action','your-action-for-delete-foo');
         $('#form-id').submit();
    else-just-return
}


function deleteBar() {
    do-your-modal-whichever-way-you-want;
    if confirmed, 
         $('#form-id').attr('action','your-action-for-delete-bar');
         $('#form-id').submit();
    else-just-return
}


function allowEdit() {
    whatever
}