【问题标题】:how to differentiate two submit button for sweetalert in a single form如何在一个表单中区分 Sweetalert 的两个提交按钮
【发布时间】:2021-04-27 04:01:51
【问题描述】:

我不知道如何区分 sweetalert 中的两个按钮

    <link href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form method="POST" id="deleteform" action="/">
        <input type="hidden" name="amccode" id="amccode" value="1">
        <button class="btn btn-danger" id="test1_id" name="test1" type="submit">TEST1</button>
        <button class="btn btn-danger" id="test2_id" name="test2" type="submit">TEST2</button>
</form>
<script>
$('#test1_id').on('click',function(e) {

    event.preventDefault();
var form = $(this).parents('form');

        swal({
  title: "Are you sure?",
  text: "All data related to this AMC ID will be parmanently deleted",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes",
  cancelButtonText: "No, cancel please!",
  closeOnConfirm: false,
  closeOnCancel: false
},
function(isConfirm){
  if (isConfirm) {
          form.submit();
          } else {
    swal("Cancelled", "ha :)", "error");

  }
});
});


$('#test2_id').on('click',function(e) {

    event.preventDefault();
var form = $(this).parents('form');

        swal({
  title: "Are you sure?",
  text: "TEST2",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes",
  cancelButtonText: "No, cancel please!",
  closeOnConfirm: false,
  closeOnCancel: false
},
function(isConfirm){
  if (isConfirm) {
          form.submit();
          } else {
    swal("Cancelled", "ha :)", "error");

  }
});
});

</script>

在处理表单的代码中,我无法获取 name="test1" 或 name="test2" 信息,因此无法区分两个按钮,所以我想在按下 button1 时处理 action1,并处理按下按钮2时的动作2

我支持的代码是

from flask import Flask, flash, render_template, request

app = Flask(__name__)
app.secret_key = "assa"


@app.route("/", methods=["POST", "GET"])
def single_input():
    if request.method == "POST":
        print(request.form)
        return render_template("index.html")
    return render_template("index.html")


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

我无法得到哪个响应来自 test1,哪个来自 test2

【问题讨论】:

  • 嗨,所以您需要根据按钮更改表单内的action 值,即:test1,test2?
  • 嗨,斯瓦蒂,是的,你有我的问题

标签: html jquery flask sweetalert


【解决方案1】:

你需要使用attr来获取元素的属性

https://api.jquery.com/attr/

$('#test1_id').on('click',function(e) {
  var getNameAttr = $(this).attr("name");
  console.log(getNameAttr);
  
  event.preventDefault();
  var form = $(this).parents('form');

  swal({
    title: "Are you sure?",
    text: "All data related to this AMC ID will be parmanently deleted",
    type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Yes",
    cancelButtonText: "No, cancel please!",
    closeOnConfirm: false,
    closeOnCancel: false
  },
  function(isConfirm){
    if (isConfirm) {
      form.submit();
    } else {
      swal("Cancelled", "ha :)", "error");
    }
  });
});


$('#test2_id').on('click',function(e) {
  var getNameAttr = $(this).attr("name");
  console.log(getNameAttr);
  
  event.preventDefault();
  var form = $(this).parents('form');

  swal({
    title: "Are you sure?",
    text: "TEST2",
    type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Yes",
    cancelButtonText: "No, cancel please!",
    closeOnConfirm: false,
    closeOnCancel: false
  },
  function(isConfirm){
    if (isConfirm) {
      form.submit();
    } else {
      swal("Cancelled", "ha :)", "error");
    }
  });
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form method="POST" id="deleteform" action="/">
  <input type="hidden" name="amccode" id="amccode" value="1">
  <button class="btn btn-danger" id="test1_id" name="test1" type="submit">TEST1</button>
  <button class="btn btn-danger" id="test2_id" name="test2" type="submit">TEST2</button>
</form>

【讨论】:

  • 我只是更新我的问题,提交表单后我无法获得“test1”或“test2”信息
  • @user1334609 这个答案几乎是正确的。只需添加form.attr("action",getNameAttr) 以更改if (isConfirm) {.. 内的表单操作或使用这些值添加一些隐藏输入。
  • Hi Swait,我想用单后端函数,可以用变量来判断吗?
  • @user1334609 是的,或者如果您正在更改操作,您可以根据此更改您的逻辑检查内部 url test1test2 是否存在,即:if 'test1' in request.path 类似的东西。
  • Hi Swait,但是 test1 或 test2 如何传递到后端?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 2018-03-29
  • 1970-01-01
相关资源
最近更新 更多