在<form>标记之外的两个提交按钮,都提交第一个按钮

时间:2018-03-20 14:25:41

标签: php html forms submit

我需要有两个提交按钮放在我的表单之外。 两个或多个提交按钮的典型解决方案是为每个提供一个唯一的名称或相同的名称和一个唯一值,然后在$ _POST中进行检查。

不幸的是,当我将按钮放在窗体之外时,这不起作用。我试图将表单ID作为&#34;表格&#34;属性并尝试使用=&#34; input-id&#34;的属性创建标签。没有运气。

我按下的按钮始终是$ _POST中的第一个按钮名称。

例如,这是表格:

int min =1;
int max = 99;  
 private static int getRandomNumberInRange(int min, int max) {

        if (min >= max) {
            throw new IllegalArgumentException("max must be greater than min");
        }

        Random r = new Random();
        return r.nextInt((max - min) + 1) + min;
    }

1 个答案:

答案 0 :(得分:0)

因此,在您的HTML标题中,您需要包含以下内容:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

然后你的表单需要有这样的ID,两个按钮具有相同的类。重要的是,您会注意到按钮具有不同的ID。

<form action="" id="form1" method="post">
<input type="text" name="example" required>
<input type="text" name="example" required>
</form>
<button class="submit" id="option1">Submit option 1</button>
<button class="submit" id="option2">Submit option 2</button>

然后使用AJAX方法的JQuery。首先,我们使用按钮的类(在本例中为submit)来检测单击,此时它将获取按钮的ID。然后,您可以将操作变量设置为您希望每个按钮的操作。然后,我们使用serialize函数收集所有表单数据并发送它。

我没有机会测试这个,不得不很快嘲笑它,所以请让我知道任何问题。

$(".submit").on("click", function(){
    var id = $(this).attr("id");
  if(id=="option1"){
  var action = 'action1.php';
  }
  else if(id=="option2"){
  var action ='action2.php';
  }
  data = $("#form1").serialize();
  $.ajax({
    url: action,
    method: 'post',
    data: data
  });
});