Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止表单提交到数据库时重新加载页面_Javascript_Jquery_Html_Ruby_Forms - Fatal编程技术网

Javascript 防止表单提交到数据库时重新加载页面

Javascript 防止表单提交到数据库时重新加载页面,javascript,jquery,html,ruby,forms,Javascript,Jquery,Html,Ruby,Forms,我见过一些与我的问题相似但不完全相同的问题,所以如果这是重复的,对不起。我正在使用javascript隐藏和显示功能,试图在他们提交表单后隐藏“谢谢”消息,该表单将信息提交到数据库,效果很好,但我无法阻止页面转到下一页。它总是属于/关于你 我尝试在表单顶部使用onsubmit=“return false”,它完全阻止表单提交。我尝试过onclick=“return false。”我不太确定如何实现jquery函数。我对jquery一无所知,所以如果答案涉及jquery,请尽可能详细地告诉我 我只

我见过一些与我的问题相似但不完全相同的问题,所以如果这是重复的,对不起。我正在使用javascript隐藏和显示功能,试图在他们提交表单后隐藏“谢谢”消息,该表单将信息提交到数据库,效果很好,但我无法阻止页面转到下一页。它总是属于/关于你

我尝试在表单顶部使用onsubmit=“return false”,它完全阻止表单提交。我尝试过onclick=“return false。”我不太确定如何实现jquery函数。我对jquery一无所知,所以如果答案涉及jquery,请尽可能详细地告诉我

我只是想让页面加载成为“感谢您完成调查”。这是一个1页的网页,因此转到另一个重复版本的网页是不可行的。非常感谢您的帮助。多谢各位

这是javascript函数

function hideyou(){
    document.getElementById("about_you_form").style.display = "none";
    document.getElementById("thank_you").style.dislay = "block";
}
这是提交

<input id="about_you_submit" type="submit" onclick="hideyou();" value="Submit">

我认为您正在尝试在不刷新页面的情况下提交表单。现在您可以提交表单,数据被发送并保存到数据库中,但javascript:

document.getElementById("about_you_form").style.display = "none";
document.getElementById("thank_you").style.dislay = "block";
无法执行和执行其工作,因为浏览器已重定向(您正在向/关于您发出请求)。您需要做的是简单的AJAX请求(在后台发送数据,浏览器保持在同一页面上,并且在成功发送数据并从服务器响应后,javascript开始工作)

将您的隐藏功能更改为:

function hideyou(e, btn){
  e.preventDefault();
  var form = $(btn).parents('form');

  $.ajax({
    type: "POST",
    url: $(form).attr('action'),
    data: $(form).serialize(),
    success: function(response){
      document.getElementById("about_you_form").style.display = "none";
      document.getElementById("thank_you").style.dislay = "block";
    }
  });

}
然后改变

<input id="about_you_submit" type="submit" onclick="hideyou();" value="Submit">



target=
一个隐藏或未隐藏的来自tagI的iframe,我想知道多种方法来实现这一点。请详细说明你的意思。如果我有一个名为fname的表单,我会将…target=fname放在submit标记中?您可以添加任何内容来帮助我了解那里发生了什么。url、数据、序列化…我假设成功:基本上是(onsuccess运行此函数)和$(btn).parents('form),基本上是整个事情,我不熟悉。但是它工作得很好,非常感谢你!好啊我一直在玩弄它。我通过运行隐藏感谢消息的隐藏函数来启动页面。您的代码运行得非常好,只是没有加载感谢消息。在开始的时候,我在页面的最底部有hideThankYou函数,隐藏可以工作。隐藏函数是否阻止代码显示感谢id?这是一个函数,默认情况下,您不必使用该函数隐藏感谢信息。相反:在id为=“Thank\u you”(或其他名称)的html元素上添加inline style=“display:none”。这样一来,默认情况下就不会有单独的javascript来隐藏消息。这是我从来没有考虑过的。但它没有显示的原因是一个小的打字错误。“thank_you”getElementById具有“dislay”而不是display。直到今天我才看到它。但你的方式似乎更有效,更少黑客。谢谢你所做的一切。
<input id="about_you_submit" type="submit" onclick="hideyou();" value="Submit">
<input id="about_you_submit" type="submit" onclick="hideyou(event, this);" value="Submit">