JavaScript确认取消在Laravel表单上不起作用

JavaScript confirm cancel does not work on Laravel Form

本文关键字:表单 不起作用 Laravel 确认 取消 JavaScript      更新时间:2024-05-19

我有这个确认:

<script type="text/javascript">
    function ConfirmDelete() {
        if (confirm("Are you sure you want to delete?")) {
            return true;
        }
        else {
            return false;
        }
    }
</script>

然后我有了我的拉拉威尔形式:

{!! Form::open(['action' => ['Test''TestController@destroy', $thread->id], 'method' => 'delete', 'onsubmit' => 'ConfirmDelete()']) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger']) !!}
{!! Form::close() !!}

我收到消息,如果按"确定",线程会被删除,但取消时也会发生这种情况。如果我按下取消键,我该怎么办才能不发生任何事情?

您可以进一步整理您的javascript

<script type="text/javascript">
    function ConfirmDelete() {
        return confirm("Are you sure you want to delete?");
    }
</script>

此外,您需要确保在提交时返回函数的响应,例如

{!! Form::open(['action' => ['Test''TestController@destroy', $thread->id], 'method' => 'delete', 'onsubmit' => 'return ConfirmDelete()']) !!}

更改为:

{!! Form::open(['action' => ['Test''TestController@destroy', $thread->id], 'method' => 'delete', 'onsubmit' => 'return ConfirmDelete()']) !!}

您需要在函数调用前添加return语句

更改以下代码

'onsubmit' => 'ConfirmDelete()'

'onsubmit' => 'return ConfirmDelete()'

如果你愿意,你也可以内联它;)

'onsubmit' => 'return confirm("Are you sure you want to delete?")'

onclick事件处理程序中调用JavaScript函数时,事件处理程序的返回值决定是否也应该发生默认浏览器行为。

这就是为什么即使在确认对话框中按Cancel,它也会被删除的原因。