【问题标题】:Form submit with 2 buttons + sweetalert2使用 2 个按钮 + sweetalert2 提交表单
【发布时间】:2017-12-27 05:10:41
【问题描述】:

我有一个表单,其中有 2 个提交按钮。

  1. For- 发布故事
  2. 故事草稿

如果用户点击发布故事,故事将被简单地发布。 但是,如果用户单击草稿故事,则会出现一条警报(SweetAlert2),以确认该用户确实希望将这个故事保存在草稿中。
PS:我也是在我的表单中使用 jqBootstrapValidation
HTML

<form method="POST" name="storyForm" novalidate enctype="multipart/form-data">
  <input name="storyTitle" required>
  <input name="storyDetail" required>
  <input name="storyCategory" required>

  <button type="submit" onclick="storyPublish()">Publish</button>
  <button type="submit" onclick="storyDraft()">Draft</button>
</form>

以前我使用这个 javascript 提交表单,但现在我想要在发送到 Draft 之前先发出 sweetalert:

function storyPublish()
{
    document.storyForm.action = "ePHP/storyPublish.php"
    document.storyForm["storyForm"].submit();

}
function storyDraft()
{
    document.storyForm.action = "ePHP/storyDraft.php"
    document.storyForm["storyForm"].submit();

}

【问题讨论】:

    标签: javascript jquery forms sweetalert sweetalert2


    【解决方案1】:

    我已经为你尝试了一些东西,这和你想要的一样吗?

    function storyPublish(e)
    {
        $(".validated").jqBootstrapValidation(
        {
            preventSubmit: true,
            submitError: function($form, event, errors) {
                // Here I do nothing, but you could do something like display 
                // the error messages to the user, log, etc.
            },
            submitSuccess: function($form, event) {
                document.storyForm.action = "ePHP/storyPublish.php"
                document.storyForm.submit();    
        
                event.preventDefault();
            },
            filter: function() {
                return $(this).is(":visible");
            }
        }
      );
    }
    function storyDraft(event)
    {
        $(".validated").jqBootstrapValidation(
        {
            preventSubmit: true,
            submitError: function($form, event, errors) {
                // Here I do nothing, but you could do something like display 
                // the error messages to the user, log, etc.
            },
            submitSuccess: function($form, event) {
                    swal({
                title: "Are you sure?",
                text: "You want to save as draft?",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Yes, Draft it!",
                cancelButtonText: "No, cancel plx!"
            }).then((result) => {
                if(result.value){
                    document.storyForm.action = "ePHP/storyDraft.php";
                    document.storyForm.submit();
                } else {
                    swal("Cancelled", "Your imaginary file is safe :)", "error");
                }
            });   
        
            event.preventDefault();
            },
            filter: function() {
                return $(this).is(":visible");
            }
        });
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <script src="https://reactiveraven.github.io/jqBootstrapValidation/js/jqBootstrapValidation.js"></script>
    <script src="https://unpkg.com/sweetalert2@7.1.3/dist/sweetalert2.all.js"></script>
    
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    
    
    <form method="POST" name="storyForm" novalidate enctype="multipart/form-data">
        <div class='control-group'>
            <div class="controls">
                <input name="storyTitle" class='validated' id='storyTitle' required data-validation-required-message='test'>
                <p class="help-block"></p>
            </div>
        </div>
        <div class='control-group'>
            <div class="controls">
                <input name="storyDetail" class='validated' required>
                <p class="help-block"></p> 
            </div>
        </div>    
        <div class='control-group'>
            <div class="controls">
                <input name="storyCategory" class='validated' required>
                <p class="help-block"></p>
            </div>
        </div>
        <div class='form-action'>
            <button type="submit" onclick="storyPublish(event)">Publish</button>
            <button type="submit" onclick="storyDraft(event)">Draft</button>
        </div>
    
    </form>

    【讨论】:

    • 其实按照你的意思你是对的。但问题是我已经尝试过了。它不是验证表格。尊重的字段是否为空!
    • 我已经更新了我的答案请现在检查,我已经添加了 jquery 验证@GermanCoder
    • @GermanCoder 在我使用 bootstrap-sweetalert 之前,我已经更新到 sweetalert original,请检查
    • 我已经检查了你更新的脚本,但我不知道为什么它不能在我的脚本上运行。这正是我想要的。
    • 正是我想要的。非常感谢您的帮助。我的大脑彻底完蛋了!
    【解决方案2】:

    类似的东西。

    $('#draft').on('click', (e) => {
    	e.preventDefault()
      swal({
        title: 'You want to save?',
        text: "You can come back to this later!",
        type: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        cancelButtonColor: '#d33',
        confirmButtonText: 'Yes, save it!'
      }).then((result) => {
        if (result.value) {
    			let data = $('form').serialize();
          let urlToPostTo = 'https://posttestserver.com/post.php';
      		$.post(urlToPostTo, data, function(){
              swal(
                'Saved!',
                'Your file has been saved.',
                'success'
              )
          });
        }
      })
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form action="ePHP/storyPublish.php" method="post">
      <input name="storyTitle">
      <input name="storyDetail">
      <input name="storyCategory">
      <button type="submit">Publish</button>
      <button id="draft" type="submit">Draft</button>
    </form>
    <script src="https://unpkg.com/sweetalert2@7.1.3/dist/sweetalert2.all.js"></script>

    【讨论】:

    • ^我没有这样做对不起。你的手段也是对的,但你的脚本也没有验证形式。
    猜你喜欢
    • 1970-01-01
    • 2014-01-31
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多