jquery - 单击后阻止默认提交

时间:2017-11-10 17:42:38

标签: javascript jquery laravel

它适用于get方法和窗口位置,但我只需要使用post方法提交表单。删除内容的帖子方法更安全。所以我需要一个提交方法并调用该特定表单。怎么做?

html(Laravel):

<form method="POST" action="/admin-sdk/messages/delete/{{ $mes->id }}" class="genposts" data-postid="{{ $mes->id }}">
                        <input type="hidden" name="_method" value="DELETE">
                        {{ csrf_field() }}
                    <button type="submit" class="fa fa-trash btn-sm btn-danger" aria-hidden="true"></button>
                </form>

jquery的:

$('.genposts').on('click', function(event){
        event.preventDefault();

        var postId = $(this).attr('data-postid');
        var texttitle = $(this).parent().prev().prev().prev().text();

        $('#post-body').text(texttitle + ';');

        $('#edit-modal').modal();

        function deleted() {
          $(this).off('submit').submit();
          return true;
        }


        $('#modal-save').on('click', deleted());
    });

1 个答案:

答案 0 :(得分:0)

function deleted() {
    $(this).off('submit').submit();
    return true;
}

$('#modal-save').on('click', deleted());

这样就可以了。 --------- ^

在删除方法的末尾看到那个()?这使它执行。创建事件绑定时,它需要函数引用,而不是执行。因此,由于您正在执行实际绑定的方法,因为单击处理程序是从该方法返回的内容,这是一个布尔值&#39; true&#39;,这是无效的。将其更改为:

$('#modal-save').on('click', deleted);

接下来是删除方法。

$(this).off('submit').submit();

如果&#39; #modal-save&#39;是表单内的一个按钮,调用它上面的submit()没有意义。您想要提交按钮的表单,该表单可以是以下任一项:

$(this).trigger('click');
$(this).closest('form').submit();

一个问题是你正在为genposts click事件处理器内部的模态保存创建绑定,这可能导致多个绑定,如果是这种情况应该避免。