e.preventDefault仅在第一次操作时

时间:2016-02-09 08:17:27

标签: javascript jquery

我有以下脚本:

var submited = false;
$('.trx-form').one('submit', function(e){
    if(!submited){
        e.preventDefault();

        var i = 0, $this = $(this);
        (function conf(){
            $.confirm({
                title: 'Confirm Action',
                content: 'Yakin data yang dimasukan sudah benar?',
                closeIcon: 'fa fa-close',
                theme: 'dark',
                confirm: function(){
                    if(i < 2){
                        i++; submited = true;
                        conf();
                    }else{
                        $('.trx-form').trigger('submit');
                    }
                },
                cancel: function(){
                    e.preventDefault();
                }
            });
        })();
    }
});

首次点击提交按钮,确认对话框弹出3次,之后表格应该在没有弹出窗口的情况下被提交。如果我再次单击“提交”按钮,它会正常工作,但不能使用$('.trx-form').trigger('submit')。有谁知道这个问题?

4 个答案:

答案 0 :(得分:1)

因为您使用 $()。一个功能,这意味着可以点击一次, $(&#34;&#34;)。on(&# 34;&#34)

答案 1 :(得分:0)

one仅执行一次,并在第一次执行后取消绑定事件。

尝试使用on绑定事件并根据需要处理多次点击。

答案 2 :(得分:0)

尝试使用这样:

var submited = false;
$(document).on("submit", ".trx-form", function(e) {

    $this = $(this);
    if(!submited){
        e.preventDefault();

        var i = 0, 


        (function conf(){
            $.confirm({
                title: 'Confirm Action',
                content: 'Yakin data yang dimasukan sudah benar?',
                closeIcon: 'fa fa-close',
                theme: 'dark',
                confirm: function(){
                    if(i < 2){
                        i++; submited = true;
                        conf();
                    }else{
                         $this.submit();
                    }
                },
                cancel: function(){
                    e.preventDefault();
                }
            });
        })();
    }
});

答案 3 :(得分:0)

感谢所有回答我问题的人。我在

的帮助下解决了这个问题
var submited = false;
$('.trx-form').on('submit', function(e){
    if(!submited){
        e.preventDefault();

        var i = 0, $this = $(this);
        (function conf(){
            $.confirm({
                title: 'Confirm Action',
                content: 'Yakin data yang dimasukan sudah benar?',
                closeIcon: 'fa fa-close',
                confirmButton: 'Ok',
                cancelButton: 'Cancel',
                confirmButtonClass: 'btn btn-primary',
                cancelButtonClass: 'btn btn-danger',
                theme: 'black',
                confirm: function(){
                    if(i < 2){
                        i++; submited = true;
                        conf();
                    }else{
                        $('[name="submit"], #_submit').click();
                    }
                },
                cancel: function(){
                    submited = false;
                }
            });
        })();
    }
});

首先,我不是在submit()trigger('submit')执行click(),而是在提交按钮上执行on()。第二,如果用户点击取消按钮然后重新提交表单,我会忘记弹出窗口重新出现,因此我使用one()代替one(),因为描述的--help仅处理事件一次,它会在第二次机会中解开。