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

时间:2015-01-26 21:01:01

标签: javascript php jquery ajax

我创建了一个包含多个部分的表单。每次从部分的下拉列表中选择答案时,页面都会清除/刷新已从其他部分输入的数据。我使用“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个问题。

2 个答案:

答案 0 :(得分:0)

<form>的默认方法是POST,因此您的其他数据位于$_POST变量中。没看到你的<form>标签是什么样的,很难说这是不是问题。

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

答案 1 :(得分:0)

客户端代码(即JavaScript)与服务器端代码的生命周期不同,这似乎引起了混淆。这听起来像是发生了什么:

  1. 用户选择值客户端
  2. 您的JavaScript提交表单,强制要加载新页面
  3. 您的表单没有告诉服务器用户在#1中选择的值,或者在重新发送页面时没有使用它
  4. 因此,您将在选择丢失的页面上结束
  5. 解决方案是:

    • 修复你的客户端代码以发送select的值(除非你添加代码以防止它,否则它应该已经在做了)
    • 修复服务器端代码以保存该值(例如,在会话中或数据库中)
    • 修复服务器端代码以使用该保存的值在返回页面时将相应的“option”元素标记为“selected”

    确切的解决方案当然取决于您的实际问题。