【问题标题】:Reload the page with parameter triggered by JavaScript dropdown change event使用 JavaScript 下拉更改事件触发的参数重新加载页面
【发布时间】:2011-03-22 01:53:37
【问题描述】:

我希望重新加载并预先选择一个表单,并使用所做的选择。这是我的 HTML 表单:

<form name='vehicleform'>

<select name='vehiclelist'>
  <option value=''>Select</option>
  <option value='bus'>Bus</option>
  <option value='bike'>Bike</option>
  <option value='car'>Car</option>
</select>

<input type='text' name='current'></input>

</form>

当用户第一次打开页面时,下拉框将默认显示在选择选项上,文本框(当前)将为空。

当用户从下拉菜单中选择任何选项时,页面需要重新加载,并且应该选择该下拉项目并且该下拉菜单的值应该在文本输入字段中。

我需要什么 JavaScript 函数来实现这一点?

【问题讨论】:

    标签: javascript html drop-down-menu


    【解决方案1】:

    像这样:

    <select name='soemname' id="myid" onchange="document.location.href = 'page.php?var=' + this.value">
      <option value=''>Select</option>
      <option value='bus'>Bus</option>
      <option value='bike'>Bike</option>
      <option value='car'>Car</option>
    </select>
    
    <script type="text/javascript">
      document.getElementById('myid').value = "<?php echo $_GET['var'];?>";
    </script>
    

    【讨论】:

      【解决方案2】:

      sAc's answer 告诉您如何使用 onchange 事件来修改 location.href 属性。这将起作用,但禁用 JS 的用户无法访问它。我会在表单的 action 属性中设置一个 url,并让 select 元素在 onchange 事件中提交表单。这样,使用 JavaScript 的用户仍然可以按回车键重新加载页面,效果相同:

      <?php $sel = isset($_GET['vehiclelist']) ? $_GET['vehiclelist'] : ""; ?>
      <form name='vehicleform' action="thispage.php">
      
      <select name='vehiclelist' onchange="this.parentNode.submit();">
        <option value='' >Select</option>
        <option value='bus' <?php echo $sel == "bus" ? "selected" : "";?>>Bus</option>
        <option value='bike' <?php echo $sel == "bike" ? "selected" : "";?>>Bike</option>
        <option value='car' <?php echo $sel == "car" ? "selected" : "";?>>Car</option>
      </select>
      
      <input type='text' name='current' value="<?php echo htmlspecialchars($_GET['var']); ?>"></input>
      
      </form>
      

      最终结果是禁用 JavaScript 的用户也可以访问该功能。

      【讨论】:

      • @sAc: 哈,我可以理解 :)
      • 实际上,我必须单独提交此表单,以使用提交按钮将文本框(当前)值存储在数据库中(问题中遗漏了)。因此,我必须在提交此表单时调用另一个脚本来将文本框值存储在数据库中。我认为js是这种情况下唯一的选择?
      • @NAVEED:您可以为一个表单指定多个提交按钮,如果提供了 name 属性,您可以检测哪个按钮用于发送表单。如果您在发送“真实”提交并将数据记录在数据库中时要捕获服务器端条件。另请参阅articles.techrepublic.com.com/5100-10878_11-5242116.html
      • 输入值中的HTML注入漏洞。记住htmlspecialchars()
      • @bobince:没错。当我在这里写答案时,这种事情并不总是发生在我身上,谢谢你的推动。
      猜你喜欢
      • 2019-06-18
      • 2012-05-05
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 2014-11-01
      • 2012-12-18
      • 1970-01-01
      相关资源
      最近更新 更多