下拉选择重置文本字段 onchange= "this.form.submit();"



我创建了一个包含多个部分的表单。每次我从某个部分的下拉列表中选择答案时,页面都会清除/刷新已从其他部分输入的数据。我使用"onchange"事件的原因是在提交表单之前在底部显示计算。

B部分:

<label class="sr-only" for="answerone"></label>
    <select id="answerOne" name="answerone" onchange="this.form.submit();"      class="form-control">
    <option value="0" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="0") echo "selected"?>>Select One</option>
    <option value="1" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="1") echo "selected"?> >No</option>
    <option value="2" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="2") echo "selected"?>>Yes</option>
    <option value="3" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="3") echo "selected"?>>NA</option>
</select>

E节:

<php ? 
  $totalscore=array($_GET['answerone'],$_GET['answertwo'], $_GET['answerthree']);
                  echo array_sum($totalscore) . "%";
?>

也许使用php的JavaScript或ajax可以工作。我尝试使用,但我不知道如何将 JavaScript 变量存储到 php 变量中。我有大约10个问题。

<form>的默认

方法是 POST,因此您的其他数据片段位于 $_POST 变量中。没有看到您的<form>标签是什么样子的,很难判断这是否是问题所在。

听起来您想要的是不要每次都提交表单,而是使用 AJAX 来处理它。例如,在任何特定的<input/>标记上,连接一个事件以将数据保存在某个位置,并将新数据显示到计算中。

客户端代码(即。JavaScript)的生存期与服务器端代码不同,这似乎在这里引起了混乱。听起来正在发生的事情是:

  1. 用户在客户端选择值
  2. 您的 JavaScript 提交表单,强制加载新页面
  3. 您的表单没有告诉服务器用户在 #1 中选择的值,或者在重新发送页面时没有使用它
  4. 结果,您最终会在页面上丢失您的选择。

解决方案是:

  • 修复客户端代码以发送选择的值(除非您添加了代码来阻止它,否则它应该已经在这样做)
  • 修复服务器端代码以将该值保存在某个位置(例如,在会话或数据库中)
  • 修复服务器端代码,以使用该保存的值在返回页面时将相应的"选项"元素标记为"已选择"

确切的解决方法当然取决于您的实际问题是什么。

最新更新