【问题标题】:form confirm before submit提交前确认表格
【发布时间】:2011-09-21 09:55:33
【问题描述】:

我正在使用一个简单的表单,我想让用户在表单提交之前进行确认...我知道使用 jQuery 很容易,但我对代码有点困惑...

$(function() {
  $(".testform").submit(function() {
    $('.submitbtn').text('confirm');
  });
});

我知道上面的代码不完整,我希望你的帮助来完成它,所以它会发出一个警报(使用 jQuery 警报),上面写着“请确认一切是否正确”并更改提交上的文本按钮“确认”而不是“提交”。如果用户再次单击确认,它将提交表单。我希望这是有道理的。谢谢。

【问题讨论】:

标签: jquery


【解决方案1】:
$('#myForm').submit(function() {
    var c = confirm("Click OK to continue?");
    return c; //you can just return c because it will be true or false
});

【讨论】:

  • 这比我的解决方案好。
  • 您可以让confirm() 与JQuery 对话框确认一起工作吗?看看这个:stackoverflow.com/a/17037698/3175526
  • 请记住,在新的 jQuery 版本中,防止默认操作的首选方法是 e.preventDefault(),而不是在事件处理程序中返回 false,因为 return false 一次做了太多事情。
  • 看到这个后,我尝试了<form method="post" onsubmit="return confirm('Sure?')">,它工作了哈哈。为什么这不是这里的解决方案之一?它不适用于method="get" 或其他浏览器吗?
【解决方案2】:
$('.testform').submit(function() {
  if ($(this).data('first-submit')) {
    return true;
  } else {
    $(this).find('.submitbtn').val('Confirm').data('first-submit', true);
    return false;
  }
});

【讨论】:

  • 只是我养成的一个习惯。这是一种存储与特定 DOM 元素相关的信息的简单方法。在这种情况下,表格。这意味着您可以轻松地将.testform 替换为任何其他返回表单的选择器,并且代码将为每个表单独立工作。
【解决方案3】:

小提琴样例:http://jsfiddle.net/z68VD/

html

<form id="uguu" action="http://google.ca">
    <input type="submit" value="text 1" />
</form>

jquery

$("#uguu").submit(function() {
    if ($("input[type='submit']").val() == "text 1") {
        alert("Please confirm if everything is correct");
        $("input[type='submit']").val("text 2");
        return false;
    }
});

【讨论】:

  • 感谢 kei 的回答,我认为这段代码可以解决我的问题。我的表单还有 1 件事很长,所以我什至可以在警报后在页面顶部发送用户。
【解决方案4】:

为了得到你想要的,我会这样做:

$(document).ready(function() {
    $(".testform").click(function(event) {
        if( !confirm('Are you sure that you want to submit the form') ) 
            event.preventDefault();
    });
});

稍微解释一下该代码的工作原理, 当用户单击按钮时,将启动确认对话框,以防用户选择“否”,则不执行提交表单的默认操作。 确认后,控件将传递给继续提交表单的浏览器。 我们在这里使用标准的 JavaScript 确认。

【讨论】:

    【解决方案5】:

    基于easy-confirm-plugin 我做到了:

    (function($) {
        $.postconfirm = {};
        $.postconfirm.locales = {};
        $.postconfirm.locales.ptBR = {
            title: 'Esta certo disto?',
            text: 'Esta certo que quer realmente ?',
            button: ['Cancela', 'Confirma'],
            closeText: 'fecha'
        };
        $.fn.postconfirm = function(options) {
            var options = jQuery.extend({
                eventType: 'click',
                icon: 'help'
            }, options);
            var locale = jQuery.extend({}, $.postconfirm.locales.ptBR, options.locale);
            var type = options.eventType;
            return this.each(function() {
                var target = this;
                var $target = jQuery(target);
                var getDlgDv = function() {
                    var dlger = (options.dialog === undefined || typeof(options.dialog) != 'object');
                    var dlgdv = $('<div class="dialog confirm">' + locale.text + '</div>');         
                    return dlger ? dlgdv : options.dialog;          
                }           
                var dialog = getDlgDv();
                var handler = function(event) {
                        $(dialog).dialog('open');
                        event.stopImmediatePropagation();
                        event.preventDefault();
                        return false;
                };
                var init = function() 
                {
                    $target.bind(type, handler); 
                };
                var buttons = {};
                buttons[locale.button[0]] = function() { $(dialog).dialog("close"); };
                buttons[locale.button[1]] = function() {
                    $(dialog).dialog("close");
                    alert('1');
                    $target.unbind(type, handler);
                    $target.click();
                    $target.attr("disabled", true);
                };            
                $(dialog).dialog({
                    autoOpen: false,
                    resizable: false,
                    draggable: true,
                    closeOnEscape: true,
                    width: 'auto',
                    minHeight: 120,
                    maxHeight: 200,
                    buttons: buttons,
                    title: locale.title,
                    closeText: locale.closeText,
                    modal: true
                });
                init();
            });
            var _attr = $.fn.attr;
            $.fn.attr = function(attr, value) {
                var returned = _attr.apply(this, arguments);
                if (attr == 'title' && returned === undefined) 
                {
                    returned = '';
                }
                return returned;
            };
        };
    })(jQuery);
    

    你只需要这样调用:

        <script type="text/javascript">     
            $(document).ready(function () {
                $(".mybuttonselector").postconfirm({ locale: {
                            title: 'title',
                            text: 'message',
                            button: ['bt_0', 'bt_1'],
                            closeText: 'X'
                        }
                    });
            });
        </script>
    

    【讨论】:

      【解决方案6】:

      简单...

        $('#myForm').submit(function() {
         return confirm("Click OK to continue?");
        });
      

        $('#myForm').submit(function() {
         var status = confirm("Click OK to continue?");
         if(status == false){
         return false;
         }
         else{
         return true; 
         }
        });
      

      【讨论】:

        【解决方案7】:
        <body> 
            <form method="post">
                name<input type="text" name="text">
                <input type="submit" value="submit" onclick="return confirm('Are you sure you want to Save?')">
            </form>
        </body>
        

        【讨论】:

        • 这是最简单的答案。不知道为什么这么低。
        【解决方案8】:

        HTML

        <input type="submit" id="submit" name="submit" value="save" />
        

        JQUERY

        $(document).ready(function() {
            $("#submit").click(function(event) {
                if( !confirm('Are you sure that you want to submit the form') ){
                    event.preventDefault();
                } 
        
            });
        });
        

        【讨论】:

          【解决方案9】:
          var r = confirm('Want to delete ?'); 
          
          if (r == true) { 
              $('#admin-category-destroy').submit(); 
          }
          

          【讨论】:

          • 这个答案并没有真正添加这里尚未涵盖的任何内容。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-23
          • 2020-01-03
          • 1970-01-01
          • 2019-10-15
          • 1970-01-01
          • 2014-09-22
          相关资源
          最近更新 更多