Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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_Html_Css_Popupwindow - Fatal编程技术网

提交javascript表单时如何防止我的页面刷新

提交javascript表单时如何防止我的页面刷新,javascript,html,css,popupwindow,Javascript,Html,Css,Popupwindow,我有一个似乎无法解决的问题。我正在创建一个个性测试,当我提交表格时,它会临时在“答案框”中显示代码,但随后会快速刷新页面并清除所有数据。我想知道是不是我的javascript函数“tabletanswers”坏了,但我看不出是什么原因造成的。我之前在javascript中添加了一个弹出框,试图强制停止刷新,我可以看到是否显示了结果,但经过一点调整后,我也无法再显示这个框。如果有人能看一看我的javascript,给我指出正确的方向/告诉我哪里出了问题?抱歉,如果已回答此问题,我无法在搜索中找到它

我有一个似乎无法解决的问题。我正在创建一个个性测试,当我提交表格时,它会临时在“答案框”中显示代码,但随后会快速刷新页面并清除所有数据。我想知道是不是我的javascript函数“tabletanswers”坏了,但我看不出是什么原因造成的。我之前在javascript中添加了一个弹出框,试图强制停止刷新,我可以看到是否显示了结果,但经过一点调整后,我也无法再显示这个框。如果有人能看一看我的javascript,给我指出正确的方向/告诉我哪里出了问题?抱歉,如果已回答此问题,我无法在搜索中找到它

HTML:


人格测验
基于AAA的在线人格测试

我更喜欢和别人一起做事,而不是独自一人。 1-绝对同意
2-稍微同意
3-有点不同意
4-绝对不同意

我喜欢结识新朋友。 1-绝对同意
2-稍微同意
3-有点不同意
4-绝对不同意

我是一名优秀的外交官。 1-绝对同意
2-稍微同意
3-有点不同意
4-绝对不同意

我不太善于记住人们的出生日期。 1-绝对同意
2-稍微同意
3-有点不同意
4-绝对不同意

我发现和孩子们玩涉及假装的游戏很容易。 1-绝对同意
2-稍微同意
3-有点不同意
4-绝对不同意


提交你的答案
您的结果将显示在这里!
Javascript:

// function to calculate the result of the survey
function tabulateAnswers() {
  // initialize variables for each choice's score
  // If you add more choices and outcomes, you must add another variable here.
  var c1score = 0;
  var c2score = 0;
  var c3score = 0;
  var c4score = 0;


  // get a list of the radio inputs on the page
  var choices = document.getElementsByTagName('input');
  // loop through all the radio inputs
  for (i=0; i<choices.length; i++) {
    // if the radio is checked..
    if (choices[i].checked) {
      // add 1 to that choice's score
      if (choices[i].value == 'c1') {
        c1score = c1score + 1;
      }
      if (choices[i].value == 'c2') {
        c2score = c2score + 2;
      }
      if (choices[i].value == 'c3') {
        c3score = c3score + 3;
      }
      if (choices[i].value == 'c4') {
        c4score = c4score + 4;
      }
      // If you add more choices and outcomes, you must add another if statement below.
    }
  }

  // Find out which choice got the highest score.
  // If you add more choices and outcomes, you must add the variable here.

  var answer = c1score + c2score + c3score + c4score ;
  // Display answer corresponding to that choice
  var answerbox = document.getElementById('answer');

  answerbox.innerHTML = fullanswer;


alert("I am an alert box!");

}

// program the reset button

function resetAnswer() {
  var answerbox = document.getElementById('answer');
  answerbox.innerHTML = "Your result will show up here!";
}
//用于计算调查结果的函数
函数表解答(){
//为每个选项的分数初始化变量
//如果添加更多选择和结果,则必须在此处添加另一个变量。
变量c1得分=0;
var c2score=0;
变量C30得分=0;
变量C4得分=0;
//在页面上获取收音机输入的列表
var choices=document.getElementsByTagName('input');
//通过所有收音机输入进行循环
对于(i=0;i只需使用jQuery:

<form id="form">
  <input type="submit" value="Submit" />
</form>

<script>
$("#form").submit(e => {
  e.preventDefault();
  // Handle form
});
</script>

$(“#表格”)。提交(e=>{
e、 预防默认值();
//手柄形式
});

如果您在Submit上调用了
tabletanswers
,您将能够
在其末尾返回false;
并防止这种行为

由于您使用的是onclick,您还需要避免这样的操作:

function tabulateAnswers(_event) {
    ...
    _event.preventDefault();
    return false;
}

另一种选择是使用
按钮
输入类型,而不触发表单提交。

您是否尝试过将按钮类型更改为
按钮
?Java是一种完全独立的语言,您拥有的是JavaScript。关于您的问题,单击表单中的按钮将提交它。因为您的表单没有一个
action
属性,页面基本上会重新加载。因为你实际上没有使用任何表单功能,你可以简单地删除
标签来解决这个问题。这回答了你的问题吗?这回答了你的问题吗?jQuery不需要这样做;你可以用vanilla JS做同样的事情。这是真的,我只是想这么做使用jQuery做一些事情,因为它会让事情变得更简单。谢谢你,尽管我使用了按钮选项,但你的建议还是有效的。我必须学习如何使用其他选项
function tabulateAnswers(_event) {
    ...
    _event.preventDefault();
    return false;
}