0

我制作了一个包含多个选择的表单。当您选择一个选项时,将启用下一个选择元素并使用 Ajax 和 PHP 将其更新为值。

但是,如果您更改前一个选项,它只会在更改后重置选择字段,而不是在更改的选项下方重置所有选择。

那么如何清除最后一个更改元素下方的所有表单元素呢?

<form action="" method="post">
  Year: 
  <select onchange="updateField(this.value, 'brand', 'Year', 'Marke_vozila')">
    <option>Select year..</option>
    %year%
  </select>
  <br />
  Brand: 
  <select id="brand" onchange="updateField(this.value, 'model', 'Marke_vozila', 'Model_vozila')">
  </select>
  <br />
  Model: 
  <select id="model" onchange="updateField(this.value, 'type', 'Model_vozila', 'Tip_vozila')">
  </select>
  <br />
  Type: 
  <select id="type" onchange="updateField(this.value, 'uitvoering', 'Tip_vozila', 'izvedba_vozila')">
  </select>
  <br />
  Uitvoering: 
  <select id="uitvoering">
  </select>
  <br />
  <input type="submit" name="submit" class="submit" value="Submit" />
</form>

阿贾克斯:

    <script>
    function updateField(str, id, prevvalue, value)
    {
    if (str=="")
      {
      document.getElementById(id).innerHTML="";
      return;
      } 
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById(id).innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","inc/form_rest.php?q="+str+"&prevvalue="+prevvalue+"&value="+value,true);
    xmlhttp.send();
    }
</script>
4

2 回答 2

0

按顺序为每个表单元素提供某种形式的编号标识符,例如 inNum=0、inNum=1 等。

在 onchange 处理程序中获取此属性的值,然后选择每个 inNum 属性大于此值的元素并重置其值。

于 2013-01-27T00:28:50.730 回答
0

我没有看到 JavaScript 代码,但您可以使用 jQuery nextAll()函数来选择所有剩余的兄弟姐妹。

例如:

$(current_field).nextAll('select').val('')
于 2013-01-27T00:30:42.227 回答