我正在使用Laravel 5.2并处理其他人的代码,它有一个表单缺少在服务器端存储表单值所必需的字段。我添加了一个新的隐藏输入字段,并通过以下代码设置它的值。
<form method="POST">
<input type="hidden" value="" id="hidden_field" />
<input type="submit" class='action_button' data-action='save' />
</form>
$('.action_button').on('click', function(event) {
event.preventDefault();
$('#hidden_field').val($(this).data('action');
$('#form').submit();
});
现在提交表单,数据存储在服务器端,控制器的末尾有以下代码。
return redirect(url('home'));
虽然逻辑现在正常工作,但每当我尝试进行一些更改并提交表单时,服务器端会告诉浏览器重定向,但浏览器认为我有未保存的更改,因此它向我显示退出但不保存或保留的提示。如何在不完全禁用提示的情况下避免使用它?
答案 0 :(得分:1)
经过长时间的调试后,我的问题得到了解决,由于某些全局JS文件对页面上的每个输入按钮都有window.onbeforeunload
,因此出现错误。我发布这个
任何可能面临这个问题的人。确保您具有以下点击功能。
$('.action_button').on('click', function(event) {
event.preventDefault();
window.onbeforeunload = null;
$('#hidden_field').val($(this).data('action');
$('#form').submit();
});
答案 1 :(得分:0)
浏览器显示提示消息,因为您正在使用发布方法。我认为它会在firefox上提示,但不会在google chrome上提示。
解决方案是更改帖子以获取方法。当然,如果您发布数据,则不应该这样做。您也可以尝试使用一些javascript代码,但是当我遇到非常类似的问题时,它没有帮助。